20

私は REST API の計画の初期段階にあり、REST の HATEOAS 制約に準拠したいと考えています。しかし、JSON 形式も提供したいと思います。したがって、私の質問は、JSON でリンクとフォームを表すための規則があるかどうかです。

リンクの例を見つけましたが、これはリンクを表すかなり一般的な方法のようです。

"links": [ 
{"rel": "self", "href":"http://example.org/entity/1"},
{"rel": "friends", "href":"http://example.org/entity/1/friends"}] 

一方、フォームを表現することは、私があまり見たことがありません。おそらく誰かが座って、これらの線に沿って何かを考え出したのではないかと考えていましたが、すべての警告を考慮しました。

"forms" : [
{"rel" : "new client", "action" : "/clients", "method": "post", 
"fields" : ["name":"string", "zipcode":"int", "signedup":"date", "state": ["Alabama",...]...]}]

これのインスピレーションは、Jon Moore が JSON はハイパーメディア API の適切な形式ではないことを示唆しているこのビデオを見ることから来ています。

http://oredev.org/2010/sessions/hypermedia-apis

ところで、本当に良い話です!

すべてのご意見をお待ちしております。

4

5 に答える 5

5

JSONスキーマ標準(特に「ハイパースキーマ」)は、これを確実に許可します。JSON(ハイパー)スキーマ(HTTPヘッダーを使用)を参照すると、スキーマはデータをハイパーテキストとして解釈する方法に関するルールを定義します。

リンクを作成するための情報はどこにでもあります。ハイパースキーマは、データ(テンプレートの場合もあります)からリンクURIをアセンブルする方法を文書化し、HTTPメソッド、エンコードタイプなども指定します。

フォーム機能を取得するには:リクエストとともに送信されるデータの完全なスキーマを指定できます。必須/オプションのプロパティ、配列の長さの制約など。

デモとして、ハイパースキーマを理解し、リンクに適切なフォームを提示できるJavaScriptライブラリのウォークスルーの一部を次に示します:jsonary.com

于 2013-01-18T18:17:21.483 に答える
5

JSON Hyper Schemaを使用して、APIに取り組んでいます。ブラウズしたり、登録したり、ログインしたり、いくつかのアクションを実行したりできます。ここでチェックしてください: http://api.psprt.com

[編集] ここで私の最新のものを参照してください: www.passportedu.com https://github.com/bpanahij/HypermediaServer https://github.com/bpanahij/client-schema.json

API コードもオープン ソース化しました: https://github.com/bpanahij/passportedu_schema

気軽に見て、借りて、コメントしてください。

JSON ハイパー スキーマ( JSON-Schemaも参照) には、プロパティ メンバーを介してフォームを指定する方法があります。

{
"id": "/api/v1",
"$schema": "http://json-schema.org/draft-04/schema#",
"title": "PassportEDU API",
"name": "PassportEDU API",
"type": "object",
"description": "Bringing global students together with global schools.",
"links": [
   {
      "title": "Log In",
      "rel": "authenticate",
      "href": "/api/v1/authenticate",
      "method": "POST",
      "properties": {
        "username": {
          "title": "Your username",
          "description": "Your email address or username",
          "type": "string"
        },
        "password": {
          "title": "Your password",
          "description": "Your password",
          "type": "password"
        }
      },
      "required": ["username", "password"]
   }
   ]
}
于 2013-12-24T21:45:00.780 に答える
4

Collection+JSON、HAL、および/または Siren を確認してください。

于 2012-11-24T22:22:17.303 に答える
0

私の知る限り、現在、フォームを使用した公的に指定された汎用JSON形式はありません。必要に応じて自由に定義し、仕様を公開できます。個人的な好みとして、HALに基づくことをお勧めします。

自分で書くことにした場合は、メーリングリストを作成して他の人を招待してください。そうしないと、自分のニーズだけを満たすにはあまりにも厳密に調整しすぎて、広く適用できないいくつかの要件を誤って見落としてしまう危険があります。

于 2012-12-03T08:22:59.040 に答える