SpringBoot 之实现Restful服务

													<span class="tags-box artic-tag-box">
							<span class="label">标签:</span>
															<a data-track-click="{&quot;mod&quot;:&quot;popu_626&quot;,&quot;con&quot;:&quot;Spring Boot&quot;}" data-track-view="{&quot;mod&quot;:&quot;popu_626&quot;,&quot;con&quot;:&quot;Spring Boot&quot;}" class="tag-link" href="http://so.csdn.net/so/search/s.do?q=Spring Boot&amp;t=blog" target="_blank">Spring Boot																</a>
						<span class="article_info_click">更多</span></span>
																				<div class="tags-box space">
							<span class="label">个人分类:</span>
															<a class="tag-link" href="https://blog.csdn.net/wj123446/article/category/7580210" target="_blank">Spring Boot																</a>
						</div>
																							</div>
			<div class="operating">
													</div>
		</div>
	</div>
</div>
<article class="baidu_pl">
	<div id="article_content" class="article_content clearfix csdn-tracking-statistics" data-pid="blog" data-mod="popu_307" data-dsm="post">
							<div class="article-copyright">
				版权声明:本文为博主原创文章,未经博主允许不得转载。					https://blog.csdn.net/wj123446/article/details/80058856				</div>
							            <link rel="stylesheet" href="https://csdnimg.cn/release/phoenix/template/css/ck_htmledit_views-d7e2a68c7c.css">
					<div class="htmledit_views" id="content_views">
            <h1><a name="t0"></a><strong>目录</strong></h1><h2><a name="t1"></a><strong>一.运行springboot_restful工程</strong></h2><h3><a name="t2"></a>&nbsp; &nbsp;&nbsp;<strong>1.项目获取</strong></h3><h3><a name="t3"></a>&nbsp;&nbsp;&nbsp;&nbsp;2.数据库准备</h3><h3><a name="t4"></a>&nbsp;&nbsp;&nbsp;&nbsp;3.springboot_restful工程项目结构介绍</h3><h3><a name="t5"></a>&nbsp;&nbsp;&nbsp;&nbsp;4.改数据库配置</h3><h3><a name="t6"></a>&nbsp;&nbsp;&nbsp;&nbsp;5.运行工程</h3><div><br></div><h2><a name="t7"></a>二.springboot_restful工程控制层实现详解</h2><h3><a name="t8"></a>&nbsp;&nbsp;&nbsp;&nbsp;1.Spring对REST支持实现</h3><h3><a name="t9"></a>&nbsp;&nbsp;&nbsp;&nbsp;2.HTTP知识补充</h3><p></p><h2><br></h2><h2><a name="t11"></a>三.小结</h2><p></p><p><strong><span style="font-size:16px;">一.运行springboot_restful工程</span></strong><br></p><p>&nbsp; &nbsp;&nbsp;<strong>1.项目获取</strong></p><p>&nbsp;&nbsp;&nbsp;&nbsp;git clone 下载工程:git@github.com:snail-wj/springboot_repository.git</p><p>&nbsp;&nbsp;&nbsp;&nbsp;项目地址见GitHub:<a href="https://github.com/snail-wj/springboot_repository" rel="nofollow" target="_blank">https://github.com/snail-wj/springboot_repository</a><br></p><p>&nbsp;&nbsp;&nbsp;&nbsp;<strong>2.数据库准备</strong><br></p><p><strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp; </strong>a.创建数据库springbootdb:<br></p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="background-color:rgb(240,240,240);color:rgb(0,0,0);font-family:Consolas, Inconsolata, Courier, monospace;font-size:12px;">create database springboot;</span></p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp; b.创建表person:</p><pre onclick="hljs.copyCode(event)"><code class="language-html hljs xml"><ol class="hljs-ln"><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="1"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;drop table if exists 'person';</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="2"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">	create TABLE person(</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="3"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">	&nbsp;&nbsp;&nbsp;&nbsp;id int AUTO_INCREMENT PRIMARY KEY,</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="4"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">	&nbsp;&nbsp;&nbsp;&nbsp;person_name VARCHAR(50) NOT NULL ,</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="5"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">	&nbsp;&nbsp;&nbsp;&nbsp;person_gender VARCHAR(50) NOT NULL ,</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="6"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">	&nbsp;&nbsp;&nbsp;&nbsp;description VARCHAR(50) NOT NULL</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="7"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">	);</div></div></li></ol></code><div class="hljs-button" data-title="复制"></div></pre><p>&nbsp;&nbsp;&nbsp;&nbsp;<strong>3.springboot_restful工程项目结构介绍</strong></p><p><strong>&nbsp;&nbsp;&nbsp;&nbsp;</strong><span style="font-weight:bold;white-space:pre;">	</span>org.spring.springboot<br><span style="white-space:pre;">		</span>.controller - controller层<br><span style="white-space:pre;">		</span>.dao - 数据操作层<br><span style="white-space:pre;">		</span>.domain - 实体类<br><span style="white-space:pre;">		</span>.service - 业务逻辑层<br><span style="white-space:pre;">		</span>Application - 应用启动类<br></p><p><span style="white-space:pre;">		</span>application.properties - 应用配置文件,应用启动会自动读取配置</p><p>&nbsp;&nbsp;&nbsp;<strong>&nbsp;4.改数据库配置</strong><br></p><p><strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</strong>打开application.properties文件,修改相应的数据源配置,比如数据源地址,账号,密码等(<br></p><p><span style="white-space:pre;">	</span>如果不是用mysql,自动添加连接驱动pom,修改驱动名配置)</p><p>&nbsp;&nbsp;&nbsp;&nbsp;<strong>5.运行工程</strong><br></p><p><strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</strong>右键运行spring_restful工程Application应用启动类的main函数.<br></p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;用postman工具可以有如下操作。</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;添加人员<br></p><p><span style="white-space:pre;">	</span>POST http://localhost:8080/api/person</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<img src="https://img-blog.csdn.net/20180424012026557" alt=""><br></p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;根据id,获取人员信息<br></p><p><span style="white-space:pre;">	</span>GET http://localhost:8080/api/person/1</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<img src="https://img-blog.csdn.net/20180424012114863" alt=""><br></p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;获取人员列表<br></p><p><span style="white-space:pre;">	</span>GET http://localhost:8080/api/person</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<img src="https://img-blog.csdn.net/20180424012139126" alt=""><br></p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;更新人员信息<br></p><p><span style="white-space:pre;">	</span>PUT http://localhost:8080/api/person</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<img src="https://img-blog.csdn.net/20180424012229849" alt=""><br></p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;删除人员<br></p><p><span style="white-space:pre;">	</span>DELETE http://localhost:8080/api/person/1</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<img src="https://img-blog.csdn.net/20180424012250907" alt=""><br></p><p><br></p><p><strong><span style="font-size:16px;">二.springboot_restful工程控制层实现详解</span></strong><br></p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>1.Spring对REST支持实现</strong><br></p><p><strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</strong>PersonRestController.java实现了Restful HTTP服务<br></p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br></p><pre onclick="hljs.copyCode(event)"><code class="language-java hljs"><ol class="hljs-ln"><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="1"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">	<span class="hljs-meta">@RestController</span></div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="2"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">	<span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">PersonRestController</span> </span>{</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="3"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> </div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="4"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">		<span class="hljs-meta">@Autowired</span></div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="5"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">		<span class="hljs-keyword">private</span> PersonService personService;</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="6"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> </div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="7"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">		<span class="hljs-meta">@RequestMapping</span>(value = <span class="hljs-string">"/api/person"</span> ,method = RequestMethod.GET)</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="8"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">		<span class="hljs-function"><span class="hljs-keyword">public</span> List&lt;Person&gt; <span class="hljs-title">findAll</span><span class="hljs-params">()</span></span>{</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="9"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">			<span class="hljs-keyword">return</span> personService.findAll();</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="10"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">		}</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="11"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> </div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="12"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">		<span class="hljs-meta">@RequestMapping</span>(value = <span class="hljs-string">"/api/person/{id}"</span>, method = RequestMethod.GET)</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="13"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">		<span class="hljs-function"><span class="hljs-keyword">public</span> Person <span class="hljs-title">findOne</span><span class="hljs-params">(@PathVariable(<span class="hljs-string">"id"</span>)</span> Long id)</span>{</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="14"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">			<span class="hljs-keyword">return</span> personService.findOne(id);</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="15"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">		}</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="16"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> </div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="17"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">		<span class="hljs-meta">@RequestMapping</span>(value = <span class="hljs-string">"/api/person"</span>, method = RequestMethod.POST)</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="18"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">		<span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-keyword">void</span> <span class="hljs-title">savePerson</span><span class="hljs-params">(@RequestBody Person person)</span></span>{</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="19"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">			personService.savePerson(person);</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="20"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">		}</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="21"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> </div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="22"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">		<span class="hljs-meta">@RequestMapping</span>(value = <span class="hljs-string">"/api/person"</span>, method = RequestMethod.PUT)</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="23"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">		<span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-keyword">void</span> <span class="hljs-title">updatePerson</span><span class="hljs-params">(@RequestBody Person person)</span></span>{</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="24"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">			personService.updatePerson(person);</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="25"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">		}</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="26"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> </div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="27"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">		<span class="hljs-meta">@RequestMapping</span>(value = <span class="hljs-string">"/api/person/{id}"</span>, method = RequestMethod.DELETE)</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="28"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">		<span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-keyword">void</span> <span class="hljs-title">deletePerson</span><span class="hljs-params">(@PathVariable(<span class="hljs-string">"id"</span>)</span> Long id)</span>{</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="29"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">			personService.deletePerson(id);</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="30"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">		}</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="31"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">	}</div></div></li></ol></code><div class="hljs-button" data-title="复制"></div></pre><p></p><p><br></p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;代码详解</p><span style="white-space:pre;">	</span><strong>@RequestMapping</strong>处理请求地址映射<br><span style="white-space:pre;">	</span><strong>method</strong> - 指定请求的方法的类型: POST/GET?DELETE/PUT等<br><span style="white-space:pre;">	</span><strong>value</strong> - 指定实际的请求地址<br><span style="white-space:pre;">	</span><strong>consumes</strong> - 指定处理请求的提交内容类型,例如Content-Type头部设置application/json,text/html<br><span style="white-space:pre;">	</span><strong>produces</strong> - 指定返回的内容类型<br><span style="white-space:pre;">	</span><br><span style="white-space:pre;">	</span><strong>@PathVariable</strong> URL映射时,用于绑定请求参数到方法参数<br><span style="white-space:pre;">	</span><strong>@RequestBody</strong> 这里注解用于读取请求体body的数据,通过HttpMessageConverter解析到对象中<br><p>&nbsp; &nbsp;&nbsp;<strong>2.HTTP知识补充</strong><br></p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>GET<span style="white-space:pre;">	</span></strong>- 请求获取Request-URI所标识的资源<br><span style="white-space:pre;">	</span><strong>POST </strong>- 在Request-URI所标识的资源后附加新的数据<br><span style="white-space:pre;">	</span><strong>HEAD </strong>- 请求获取由Request-URI所标识的资源的响应消息报头<br><span style="white-space:pre;">	</span><strong>PUT </strong>- 请求服务器存储一个资源,并用Request-URI作为其标识<br><span style="white-space:pre;">	</span><strong>DELETE </strong>- 请求服务器删除Request-URI所标识的资源<br><span style="white-space:pre;">	</span><strong>TRACE </strong>- 请求服务器收到的请求信息,主要用于测试或诊断<br><span style="white-space:pre;">	</span><strong>CONNECT </strong>- 保留将来使用<br></p><p><span style="white-space:pre;">	</span><strong>OPTIONS </strong>- 请求查询服务器的性能,或者查询与资源相关的和需求</p><p>&nbsp; &nbsp; 图解http协议:<a href="https://www.bysocket.com/?p=282" rel="nofollow" target="_blank">https://www.bysocket.com/?p=282</a><br></p><p><br></p><p><strong><span style="font-size:16px;">三.小结</span></strong></p><p><span style="font-size:16px;"><strong>&nbsp; &nbsp; </strong>感谢资料:<a href="https://www.bysocket.com/?p=1627" rel="nofollow" target="_blank">https://www.bysocket.com/?p=1627</a><br></span></p><p>&nbsp; &nbsp; 再次感谢<a href="https://www.bysocket.com/" rel="nofollow" target="_blank">泥瓦匠BYSocket</a>文章的支持<br></p>            </div>
            </div>
								
				<script>
					(function(){
						function setArticleH(btnReadmore,posi){
							var winH = $(window).height();
							var articleBox = $("div.article_content");
							var artH = articleBox.height();
							if(artH > winH*posi){
								articleBox.css({
									'height':winH*posi+'px',
									'overflow':'hidden'
								})
								btnReadmore.click(function(){
									if(typeof window.localStorage === "object" && typeof window.csdn.anonymousUserLimit === "object"){
										if(!window.csdn.anonymousUserLimit.judgment()){
											window.csdn.anonymousUserLimit.Jumplogin();
											return false;
										}else if(!currentUserName){
											window.csdn.anonymousUserLimit.updata();
										}
									}
									
									articleBox.removeAttr("style");
									$(this).parent().remove();
								})
							}else{
								btnReadmore.parent().remove();
							}
						}
						var btnReadmore = $("#btn-readmore");
						if(btnReadmore.length>0){
							if(currentUserName){
								setArticleH(btnReadmore,3);
							}else{
								setArticleH(btnReadmore,1.2);
							}
						}
					})()
				</script>
				</article>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值