RESTfulなWebサービス記述
博士はロイ・トーマス・フィールディングは2000年に作られました
RESTは表象英語です
頭字語の状態転送
Representational State譲渡またはのRepresentational State転送
RESTは、建築スタイルのWebサービスであります
HTTP、URIおよびその他の規格やプロトコルの普及
軽量、クロスプラットフォーム、クロスアーキテクチャ設計言語。
最終的にはRESTとは何でしょうか?
RESTスタイルです。これは、標準ではない、またそれは、ソフトウェアの一部が、考えられています。
RESTは、通常、標準的なプロトコルやHTTP、URIの使用に基づいて、XML、JSONやHTMLが広範囲に存在しています。
何のRESTfulです
中国のスタイルでのRESTful対応するREST。
RESTfulなWebサービスのRESTは、一般的なアプリケーションは、RESTスタイルのWebサービスに準拠しています。
二つの主要なWebサービス
JAX-RS
RESTfulなWebサービス
JAX-WS Webサービス
RESTアーキテクチャの主要原則
ネットワーク上のすべては、リソース(資源)として抽象化することができます
各リソースには、一意のリソース識別子(リソースを持っています
識別子)
(等XML、JSON、)種々の形態と同一のリソース
リソース上の各種操作は、リソース識別子を変更しません。
すべての操作はステートレスです(ステートレス)
やり方一貫した方針のRESTアーキテクチャは、RESTfulな呼び出すことができます
ステートレス
ステートレスは、クライアントを行い、サーバーが他のサイドの詳細を保存する必要はありません、サーバーは、現在に対処する必要があります
フロントを知らなくても、リクエストします
歴史を要求します。
だから、それが簡単にリソースを解放することができます。
サーバーをフルに活用します
プール技術は、安定性とパフォーマンスを向上させます。
リソース操作
GET:リソースを取得します。
POST:新しいリソースを作成します
PUT:リソースの状態を変更します。
DELETE:リソースを削除します。
リソース・ショー
XML
JSON
......
オリジナルの道
http://127.0.0.1/user/queryUser/ {ID} GETの方法、ユーザ ****取得データID
http://127.0.0.1/user/updateユーザPOSTメソッドは、****ユーザーによって変更します
http://127.0.0.1/user/saveユーザーPOSTの****の方法を、新しいユーザー
http://127.0.0.1/user/deleteUser/ {ID} GET / POSTの方法は、ユーザに応じて IDを削除****
RESTfulな
[ Http://127.0.0.1/user/(http://127.0.0.1/user/ {ID}){ID}](http://127.0.0.1/user/ {ID})のGET メソッド、ユーザーは ****データIDを取得します
http://127.0.0.1/user/ PUTの****法、ユーザ修正
http://127.0.0.1/user/ POSTの****方法、新しいユーザー
} http://127.0.0.1/user/{id DELETE メソッド、ユーザに応じて IDを削除****
より簡潔なインターフェース、Webサービスの開発
RESTインターフェース定義
冪等性:同じRESTインターフェースに多くの訪問は、リソース状態GETは同じです。
セキュリティ:RESTにアクセスするためのインタフェースは、サーバ側のリソースの状態の変更を行うものではありません。
ベストプラクティス
ベストプラクティス:RESTインタフェースデザイン
•URLから成ります
- ネットワーク・プロトコル(HTTP、HTTPS)
- サーバのアドレス
- インタフェース名
- パラメータ一覧
•URL定義した制限
- 大文字を使用しないでください。
- 中心線を使用する - の代わりにアンダースコア_
- エンコードパラメータリストはあまりにもする必要があります
ベストプラクティス:デザイン応答
コンテンツ本体は、データのみを送信するために使用されます
データは原則をどうするせることができ、あなたがプロセスを「開梱」する必要はありません。
要求されたデータを記述するか、ヘッダメタデータを置くために使用されます
HTTP応答ステータスコード
RESTfulなサービスを実現SpringMVC
SpringMVC元生態サポートRESTスタイルのアーキテクチャ設計。
参加する注:
@RequestMapping
@PathVariable
@ResponseBody
ResponseEntity
......
製品開発のためのRESTfulなスタイルのインターフェース
商品機能CRUDインタフェースで書かよるRESTfulなスタイル、
コモディティ書き込みクエリインターフェイス
ItemInterfaceControllerで書かれました
@Controller
@RequestMapping("item/interface")
public class
ItemInterfaceController {
@Autowired
private ItemService itemService;
// http://manager.taotao.com/rest/item/interface/{id}
/**
* 根据id查询用户
*
* @param id
* @return 返回的类型是ResponseEntity,泛型声明为需要返回的数据类型
*/
@RequestMapping(value = "{id}", method =
RequestMethod.GET)
// 返回的是ResponseEntity或者加上@ResponseBody注解的效果是一样的,任选其一即可,也可以都设置。
// @ResponseBody
public
ResponseEntity<Item> queryItemById(@PathVariable("id") Long id) {
try {
Item item = this.itemService.queryById(id);
// 查询成功,响应的状态码应为200
// 可以设置HttpStatus枚举的OK
// return
ResponseEntity.status(HttpStatus.OK).body(Item);
// 也可以使用ok()方法,效果和上面是一样的
return
ResponseEntity.ok().body(item);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// 如果有异常,设置状态码为500
return
ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(null);
}
}