RESTfulなとは何ですか
安らか実際にソフトウェアの設計スタイルではなく、必須大会。スタイルによってRESTとURL地址+HTTP动词
リソースのCRUD操作を操作します。
URLアドレスは、共通のGET、POSTは、PUT、DELETEされた当社のWebサービス、HTTP動詞のアドレスです。
なぜRESTfulなスタイルを使用
我々は、開発のこのスタイルは、各コールの後、前端と後端場合や、二つの相互に便利なの間でプログラムの呼び出しに準拠している場合は、主に、API仕様のルールをバックエンド。
統一されたスタイルがなければ、我々は非常に面倒、すべてのドキュメント転送インタフェースを見ていました。
そのスタイルを使用する理由多くの人々と、このスタイルより人気ああ、他の企業でも利用可能であるため、安らかな、それがあります。我々はまた、他の企業がそれを使用し、または理解していれば。
群衆の中に統合することが容易である、流れに行きます。
鋸エンドでのRESTful API
最後沙揚子江でのRESTful APIのスタイルを見て、またはCRUDのブログに、多くのことを引き出し、例えば、RESTfulなスタイル、そして以下の設計に従って、プロジェクトへのこだわりは、プロジェクト名を表します。
動詞 | インターフェイスの意味 | インタフェース定義 |
---|---|---|
取得する | クエリのブログ(ID = 1)情報 | http://127.0.0.1/myblog/blog/1 |
取得する | クエリのブログリスト情報 | http://127.0.0.1/myblog/blog |
役職 | 新しいブログ | http://127.0.0.1/myblog/blog |
プット | 修正ブログ(ID = 1)情報 | http://127.0.0.1/myblog/blog/1 |
DELETE | 削除ブログ(ID = 1) | http://127.0.0.1/myblog/blog/1 |
まあ、それの特性をまとめ、非常に簡単に実際にあります。
- 側面VERB、クエリがGET、新しいPOSTは、PUTを修正、削除します。これは非常にすべての通常のロジックに沿ったものであるが、通常我々は、GET / POSTが少なく、実際には、何も大きな違いとPUT / DELETE、より多くの使用プロジェクトを行うとき。
- URLの点については、IP、ポート、パスこのプロジェクト言うまでもなくするが、それはすべての固定です。それは、IDの概念を必要とする場合は、以下の具体的なインターフェースアドレス部は、プラス/ ID、その後、そのブログ(ブログ)の初めの概念に基づいています。
プロジェクトの例では、のは、全体の毛布を理解してみましょう
今、私たちは、RESTfulなWebベースのプロジェクトの完全なSpringBootを達成するためにあり、その後、このプロジェクトはZenongアップであると言います。
プロジェクトを作成します。1.
使用春Initializrプロジェクトをビルドし、次に日食をインポートし、ここでは詳細に説明されていない以前の章では、と述べました。
注springboot-安らかにプロジェクト名つまり、それはRESTfulなプロジェクトのSpringBootと言った、私はそれが大規模なプロジェクトであれば、そのプロジェクトは、いくつかのSpringBootの小型、接頭辞が含まれている可能性があるため、プロジェクト名は、なぜプレフィックスへと、下ケースを終わっ使用大規模なプロジェクトのコンセプト。
ここで図を構築するシンプルなステッカーです。
2、ウェブ依存の導入
それはウェブ開発プロジェクト、直接の紹介ですのでspring-boot-starter-web
依存、自動的に構成されたオープンなWebプロジェクト、あなたはWebプロジェクトを開発するためにそれを指示することができます。
<!-- 添加web开发功能,自动引入web相关的jar包,自动配置web相关的组件,非常强大 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
3、エンティティクラスの作成
それは、我々は、少なくともブログのクラス、オブジェクト指向開発モディを持っている必要がありますので、ブログ上で動作させることであるので、オブジェクトは社会の本当の抽象オブジェクトの現実です。引き離し、以下のブログのカテゴリの定義。
public class BlogDo {
/**
* 序号
*/
private Long id;
/**
* 标题
*/
private String title;
/**
* 内容
*/
private String content;
// 省略get set
}
4、サービスクラスを定義します
通常の状況下で、我々は変更して再検索ブログへの追加や削除を達成するために、データベースの操作に必要な、この章では、私たちの主なRESTfulなWebプロジェクトを実証するので、特定のデータベースを達成していない、とライン上の次のクラスのアナログサービスに直接書き込みです。
次のコードは、複雑ではありませんが、ここではBlogServiceクラスが呼び出さblogServiceコンポーネントとして登録することができる理由を理解@Serviceの下で取らなければなりません。ここでは、キーああ、良い理解は、以下であります:
ファーストBlogService
クラスへのクラスと私たちのプロジェクトを開始したSpringbootRestfulApplication
袋に、後SpringBootプロジェクトが立ち上げ自動設定を開始し、どこデフォルトパケットが開始クラスとそのサブパッケージをスキャンするため。
スキャンする場合はBlogService
、クラス、ああ、我々はトップ見つかった@Service
注釈を、そして春は知っている:ああ、このクラスでは、Springコンテナ管理にコンポーネントを登録するサービスコンポーネントクラス、です。
デフォルトは小文字blogServiceでコンポーネント名、より多くのと呼ばれるblogService成分よりも上、その後Springコンテナのクラス名であるので、次に、具体的な構成要素に名前付きパラメータを@Serviceません。
最後に、他のクラスが存在する場合@Autowired BlogService blogService;
、そのようなコードは、Springコンテナが自動的にこのプロパティに注入されるように、既に、豆BlogServiceの種類として登録アセンブリのタイプに応じて、それを呼び出すことができます場合。
@Service // 注册为Spring管理的组件
public class BlogService {
/**
* 获取博客列表
*/
public List<BlogDo> getBlogList() {
List<BlogDo> blogList = new ArrayList<BlogDo>();
BlogDo blog = new BlogDo();
blog.setId(1L);
blog.setTitle("抗击疫情");
blog.setContent("兄弟们加油!");
blogList.add(blog);
return blogList;
}
/**
* 按id获取博客信息,模拟返回对应博客信息
*/
public BlogDo getBlogById(Long id) {
BlogDo blog = new BlogDo();
blog.setId(1L);
blog.setTitle("抗击疫情");
blog.setContent("兄弟们加油!");
return blog;
}
/**
* 新增博客,模拟返回数据库影响行数
*/
public int addBlog(BlogDo blog) {
return 1;
}
/**
* 根据博客id更新博客信息,模拟返回数据库影响行数
*/
public int updateBlog(BlogDo blog) {
return 1;
}
/**
* 根据博客id删除对应博客,模拟返回数据库影响行数
*/
public int deleteBlog(Long id) {
return 1;
}
}
図5に示すように、コントローラベースの開発
この時点では、コントローラクラスRESTfulなスタイル、私はコメントに配置されていることに注意して、以下のコードに合わせてそれを書くことができます。
@RestController // 通过该注解,第一将BlogController注册为控制器,第二将其中方法返回值转换为json
public class BlogController {
@Autowired // 自动装配blogService
private BlogService blogService;
/**
* 查询博客信息
* 1、@GetMapping表示可以使用get方法请求该api
* 2、"/blog/{id}"表示请求路径为/blog/{id}的形式,其中{id}为占位符
* 3、@PathVariable("id")表示将占位符{id}的值传递给id
* 4、也就是说/blog/123请求的话,会将123传递给参数id
*/
@GetMapping("/blog/{id}")
public BlogDo getOne(@PathVariable("id") long id) {
return blogService.getBlogById(id);
}
/**
* 查询博客列表,使用get方法
*/
@GetMapping("/blog")
public List<BlogDo> getList(){
return blogService.getBlogList();
}
/**
* 新增博客
* 1、@PostMapping表示使用post方法
* 2、@RequestBody表示将请求中的json信息转换为BlogDo类型的对象信息,该转换也是由SpringMVC自动完成的
*/
@PostMapping("/blog")
public void add(@RequestBody BlogDo blog) {
blogService.addBlog(blog);
}
/**
* 修改博客
* 实际上此处也可以不在路径中传递id,而是整个使用json传递对象信息,但是我查询了一些文档,貌似使用路径传递id更加规范一些,此处不用纠结
*/
@PutMapping("/blog/{id}")
public void update(@PathVariable("id") long id,@RequestBody BlogDo blog) {
//修改指定id的博客信息
blog.setId(id);
blogService.updateBlog(blog);
}
/**
* 删除博客
*/
@DeleteMapping("/blog/{id}")
public void delete(@PathVariable("id") long id) {
blogService.deleteBlog(id);
}
}
6、プロジェクトのテストを開始
ハは、プロジェクトの全体的な構造を見てください。
ヒント:パッケージには、そうでない場合は、手動でスキャンパッケージを指定する必要があり、クラスとそのサブパッケージを始まるコントローラクラス、サービスクラスを配置する必要があります。
その後、次の開始ポートは1007で変更、詠唱中に設定ファイルを変更し、これは第7節までのものです。
# 配置启动端口
server.port=1007
プロジェクトを開始した後、ブラウザのアドレスバーに入力してhttp://127.0.0.1:1007/blog/1
次の結果を
{"id":1,"title":"抗击疫情","content":"兄弟们加油!"}
アドレスバーに入力しhttp://127.0.0.1:1007/blog
、以下の結果を
[{"id":1,"title":"抗击疫情","content":"兄弟们加油!"}]
パーフェクト喉。
どのようにより良いピンチをテストするには?
あなたは、このようなポストマン、またはフロントページのテストへの書き込みアクセスなどのツールの数を開始し、POST / DELETE /のPUTをテストしたい場合は、ブラウザのアドレスバーなので、テストGET要求への唯一の方法のURLを入力してください。
あまりにも多くのトラブル毛布!私は、フロントエンドエンジニアではないよ、私はテストエンジニアはないです、Anjiuは大丈夫気にしない、大丈夫書き込みAPIを試してみたいです。
もちろん、あなたは毛布をすることができ、SpringBootが生まれ簡素化するので、ユーザーフレンドリーです。
直接統合Swagger2、テストビジュアルインターフェイスの自動生成、だけでなく、自動的にオンラインインターフェースのドキュメントを生成することができ、キーがある:それは難しいことではありません!!!
OK、次にSwagger2、方法、次いで試験試験Benpianは、3つのインターフェイスを残りの集積全体SpringBootを開きます。
パーフェクト喉。