顯示具有 json 標籤的文章。 顯示所有文章
顯示具有 json 標籤的文章。 顯示所有文章

how the http protocol may support crud database operation

RESTful Web Service 為現在流行,用來存取資料庫記錄的 API 設計形式。以下以 JSON 資料交換格式為例,展示幾種對記錄進行增查改刪 (CRUD, Create, Read, Update, Delete) 運算時,常用的 HTTP 請求及回應範例。

設計 RESTful API 時,請求參數如果量小,可以利用 Path Parameter, Query String Parameter, Header Parameter, Body Parameter using application/json, Body Parameter using application/x-www-form-urlencoded 等參數傳遞法。如果參數量大,包含檔案,則可利用 Body Parameter using multipart/form-data 參數傳遞法。

同樣的,回應結果如果量小,可以利用 application/json 結果回傳法。如果量大,包含檔案,則可利用 multipart/mixed 結果回傳法。

以下透過 MS Copilot 生成幾種可能的 HTTP 請求及回應長相,如下。

(一) 利用 HTTP 進行新增及查詢記錄的幾種作法如下:
A. 請求(Request)訊息格式
A1: Path Parameter 由路徑上的id,查詢某人基本資料
GET /api/users/123 HTTP/1.1
Host: example.com
Accept: application/json
A2: Query String Parameter 由查詢字串上的id,查詢某人基本資料
GET /api/users?id=123 HTTP/1.1
Host: example.com
Accept: application/json
A3: Header Parameter 由標頭區的id,查詢某人基本資料
GET /api/users HTTP/1.1
Host: example.com
Accept: application/json
id: 123
A4: Body Parameter using application/json 由本體區的id,查詢某人基本資料
POST /api/users HTTP/1.1
Host: example.com
Accept: application/json
Content-Type: application/json
Content-Length: 18

{
  "id": 123
}
A5: Body Parameter using application/x-www-form-urlencoded 新增某人基本資料
POST /users/updateProfile HTTP/1.1
Host: example.com
Accept: application/json
Content-Type: application/x-www-form-urlencoded
Content-Length: 27

id=123&name=John+Doe&email=johndoe%40example.com
A6. Body Parameter using multipart/form-data 新增某人基本資料,含照片
POST /users/uploadProfile HTTP/1.1
Host: example.com
Accept: application/json
Content-Type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW
Content-Length: [length]

------WebKitFormBoundary7MA4YWxkTrZu0gW
Content-Disposition: form-data; name="metadata"
Content-Type: application/json

{
  "id": 123,
  "name": "John Doe",
  "email": "johndoe@example.com"
}
------WebKitFormBoundary7MA4YWxkTrZu0gW
Content-Disposition: form-data; name="profileImage"; filename="profile.jpg"
Content-Type: image/jpeg

[image data here]
------WebKitFormBoundary7MA4YWxkTrZu0gW--
B. 回應(Response)訊息格式 B1. application/json格式,回傳某人基本資料
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 85

{
  "id": 123,
  "name": "John Doe",
  "email": "johndoe@example.com"
}
B2. multipart/mixed格式,回傳某人基本資料,含檔案
HTTP/1.1 200 OK
Content-Type: multipart/mixed; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW
Content-Length: [total length]

------WebKitFormBoundary7MA4YWxkTrZu0gW
Content-Type: application/json

{
  "id": 123,
  "name": "John Doe",
  "email": "johndoe@example.com"
}
------WebKitFormBoundary7MA4YWxkTrZu0gW
Content-Type: application/octet-stream
Content-Disposition: attachment; filename="example.txt"

[file data here]
------WebKitFormBoundary7MA4YWxkTrZu0gW--
(二) 利用 HTTP 進行修改及刪除記錄的作法如下: A. 修改記錄 Request:
PUT /api/users/123 HTTP/1.1
Host: example.com
Accept: application/json
Content-Type: application/json
Content-Length: 58

{
  "name": "Jane Doe",
  "email": "janedoe@example.com"
}
Response:
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 85

{
  "id": 123,
  "name": "Jane Doe",
  "email": "janedoe@example.com",
  "status": "updated"
}
B.刪除記錄 Request:
DELETE /api/users/123 HTTP/1.1
Host: example.com
Accept: application/json
Response:
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 45

{
  "id": 123,
  "status": "deleted"
}

json format for ChineseQA-with-BERT

正常解問答題時,常以1文章1問題1答案為單位進行,但準備資料集時為省空間,常依實際1文章多問題多答案格式來存放案例。 故在利用底層BERT(雙向變形器編碼表現法)微調模型及預測問答時,須將1文章多問題多答案資料,還原成1文章1問題1答案格式, 才能進行微調及預測。

百度ChineseQA-with-BERT套件可基於BERT預訓練模型作問答題微調。 其run_dureader.py可接受的訓練檔json格式,可用來存放1文章1問題1答案內容,或1文章多問題多答案內容。

其中,訓練案例的各欄位路徑如下:

․問題編號: data/paragraphs/qas/id
․文章: data/paragraphs/context
․問題: data/paragraphs/qas/question
․答案: data/paragraphs/qas/answers/text

以下舉例說明此格式用來存放1文章1問題1答案的json格式長相。
{
    "data": [
        {
            "paragraphs": [
                {
                    "context": "文章",
                    "qas": [
                        {
                            "answers": [
                                {
                                    "answer_start": 答案起點下標,
                                    "text": "答案"
                                }
                            ],
                            "is_impossible": false,
                            "id": 問題編號,
                            "question": "問題"
                        }
                    ]
                }
            ],
            "title": "N.A."
        }
   ]
}

jquery getJSON and ajax functions for calling JSON-based web services

網頁端利用jquery提供的高階javascript方法getJSON或ajax取用其他網頁服務的寫法,資料傳收過程皆採用json格式:

  $.getJSON( "http://host:port/path",
      {bookID:"1309088",format:"json"})
    .done(function( data ) {
      var output = "";
      for(var i in data.items){
         output ="<li>" + data.items[i].value + "," + data.items[i].id + "," + data.items[i].name + "</li>\n";
         $('#result').append(output);
      }
    })
    .fail(function() {
       window.alert("fail");
    });
  //--
  $.ajax({
      url: 'http://host:port/path',   //存取Json的網址
      type: 'post',
      cache:false,
      dataType: 'json', // format expected from server
      contentType: 'application/json; charset=utf-8', // format sent to server
      data: JSON.stringify({bookID:"1309088}),
    success: function (data) {
      html = '<table>';
      i=1;
      $.each(data, function () {
          html +=  '<tr><td>' + data[i]['model'] + '</td>'
                   ' + data[i]['epoch'] + '</td></tr>\n';
         i++;
      });
      html += '</table>';

      document.getElementById("list_model").innerHTML = html;
    },
    error: function (xhr, ajaxOptions, thrownError) {
      document.getElementById("result").innerHTML =
        'internal error(' + xhr.status + ',' + thrownError + '), try again...';
    }
  });

how to call Java classes in a web page by cheerpj

🚀 在瀏覽器中直接執行 Java:CheerpJ v3 實作指南 長期以來,Java Applets 因為安全性與插件問題早已退出歷史舞台。但隨著 WebAssembly (Wasm) 技術的成熟,現在網頁安裝如下 CheerpJ v3 套件庫,就可以在瀏覽器中直接呼叫 ...

總網頁瀏覽量