Spring Boot 实现Restful webservice服务端示例代码

网友投稿 233 2023-03-16


Spring Boot 实现Restful webservice服务端示例代码

1.Spring Boot configurations

application.yml

spring:

profiles:

active: dev

mvc:

favicon:

enabled: false

datasource:

driver-class-name: com.mysql.jdbc.Driver

url: jdbc:mysql://localhost:3306/wit_neptune?createDatabaseIfNotExist=true&useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull&transformedBitIsBoolean=true

username: root

password: 123456

jpa:

hibernate:

ddl-auto: update

show-sql: true

2.Spring Boot Application

WitApp.java

/*

* Copyright 2016-2017 WitPool.org All Rights Reserved.

*

* You may not use this file except in compliance with the License.

* A copy of the License is located at

* http://witpool.org/licenses

*

* or in the "license" file accompanying this file. This file is distributed

* on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either

* express or implied. See the License for the specific language governing

* permissions and limitations under the License.

*/

package org.witpool;

import org.springframework.boot.SpringApplication;

import org.springframework.boot.autoconfigure.SpringBootApplication;

/**

* @ClassName: WitApp

* @Description: WitPool Application

* @author Dom Wang

* @date 2017-11-15 AM 11:21:55

* @version 1.0

*/

@SpringBootApplication

public class WitApp

{

public static void main(String[] args)

{

SpringApplication.run(WitApp.class, args);

}

}

3.Rest Controller

WitUserRest.java

/*

* Copyright 2016-2017 WitPool.org All Rights Reserved.

*

* You may not use this file except in compliance with the License.

* A copy of the License is located at

* http://witpool.org/licenses

*

* or in the "license" file accompanying this file. This file is distributed

* on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either

* express or implied. See the License for the specific language governing

* permissions and limitations under the License.

*/

package org.witpool.rest;

import org.slf4j.Logger;

import org.slf4j.LoggerFactory;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.web.bind.annotation.DeleteMapping;

import org.springframework.web.bind.annotation.GetMapping;

import org.springframework.web.bind.annotation.PathVariable;

import org.springframework.web.bind.annotation.PostMapping;

import org.springframework.web.bind.annotation.PutMapping;

import org.springframework.web.bind.annotation.RequestBody;

import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.RestController;

import org.witpool.chttp://ommon.enums.WitCode;

import org.witpool.common.model.bean.WitResult;

import org.witpool.common.model.po.WitUser;

import org.witpool.common.util.WitUtil;

import org.witpool.persist.WitRepository;

import org.witpool.service.WitService;

/**

* @Class Name : WitUserRest

* @Description: WitPool User Rest

* @Author : Dom Wang

* @Email : witpool@outlook.com

* @Date : 2017-11-15 PM 2:50:27

* @Version : 1.0

*/

@RestController

@RequestMapping("/users")

public class WitUserRest

{

private final static Logger log = LoggerFactory.getLogger(WitUserRest.class);

@Autowired

private WitRepository reposit;

@Autowired

private WitService service;

/**

*

* @Title: addUser

* @Description: Add one user

* @param @param user

* @param @return

* @return WitResult

* @throws

*/

@PostMapping

public WitResult addUser(@RequestBody WitUser user)

{

return WitUtil.success(reposit.save(user));

}

/**

*

* @Title: addUsers

* @Description: Add users by specified number

* @param @param num

* @param @return

* @return WitResult

* @throws

*/

@PostMapping(value = "/qRWBiEh{number}")

public WitResult addUsers(@PathVariable("number") Integer num)

{

if (num < 0 || num > 10)

{

log.error("The number should be [0, 10]");

return WitUtil.failure(WitCode.WIT_ERR_INVALID_PARAM);

}

return WitUtil.success(service.addUsers(num));

}

/**

*

* @Title: updateUser

* @Description: Update user

* @param @param user

* @param @return

* @return WitResult

* @throws

*/

@PutMapping

public WitResult&http://lt;WitUser> updateUser(@RequestBody WitUser user)

{

return WitUtil.success(reposit.save(user));

}

/**

*

* @Title: deleteUser

* @Description: delete user by ID

* @param @param userId

* @param @return

* @return WitResult

* @throws

*/

@DeleteMapping(value = "/{userId}")

public WitResult deleteUser(@PathVariable("userId") Integer userId)

{

reposit.delete(userId);

return WitUtil.success();

}

/**

*

* @Title: getUserByID

* @Description: Get user by ID

* @param @param userId

* @param @return

* @return WitResult

* @throws

*/

@GetMapping(value = "/{userId}")

public WitResult getUserByID(@PathVariable("userId") Integer userId)

{

return WitUtil.success(reposit.findOne(userId));

}

/**

*

* @Title: getUserByName

* @Description: Get user by name

* @param @param userName

* @param @return

* @return WitResult

* @throws

*/

@GetMapping(value = "/name/{userName}")

public WitResult getUserByName(@PathVariable("userName") String userName)

{

return WitUtil.success(reposit.findByUserName(userName));

}

/**

*

* @Title: getUsers

* @Description: Get all users

* @param @return

* @return WitResult

* @throws

*/

@GetMapping

public WitResult getUsers()

{

return WitUtil.success(reposit.findAll());

}

}

4.Aspect

WitAspect.java

/*

* Copyright 2016-2017 WitPool.org All Rights Reserved.

*

* You may not use this file except in compliance with the License.

* A copy of the License is located at

* http://witpool.org/licenses

*

* or in the "license" file accompanying this file. This file is distributed

* on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either

* express or implied. See the License for the specific language governing

* permissions and limitations under the License.

*/

package org.witpool.common.aspect;

import javax.servlet.http.HttpServletRequest;

import org.aspectj.lang.JoinPoint;

import org.aspectj.lang.annotation.After;

import org.aspectj.lang.annotation.AfterReturning;

import org.aspectj.lang.annotation.Aspect;

import org.aspectj.lang.annotation.Before;

import org.aspectj.lang.annotation.Pointcut;

import org.slf4j.Logger;

import org.slf4j.LoggerFactory;

import org.springframework.stereotype.Component;

import org.springframework.web.context.request.RequestContextHolder;

import org.springframework.web.context.request.ServletRequestAttributes;

/**

* @ClassName: WitAspect

* @Description: WitPool Http Aspect

* @author Dom Wang

* @date 2017-11-15 PM 3:36:38

* @version 1.0

*/

@Aspect

@Component

public class WitAspect

{

private final static Logger log = LoggerFactory.getLogger(WitAspect.class);

@Pointcut("execution(public * org.witpool.rest.WitUserRest.*(..))")

public void log()

{

}

@Before("log()")

public void doBefore(JoinPoint jp)

{

ServletRequestAttributes attr = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();

HttpServletRequest req = attr.getRequest();

// URL

log.info("WIT: URL={}", req.getRequestURL());

// Method

log.info("WIT: HTTP Method={}", req.getMethod());

// IP

log.info("WIT: IP={}", req.getRemoteAddr());

// 类方法

log.info("WIT: REST CLASS={}", jp.getSignature().getDeclaringTypeName() + "." + jp.getSignature().getName());

// 参数

log.info("WIT: ARGS={}", jp.getArgs());

}

@After("log()")

public void doAfter()

{

log.info("WIT: do after");

}

@AfterReturning(returning = "obj", pointcut = "log()")

public void doAfterReturning(Object obj)

{

log.info("WIT: RESPONSE={}", obj.toString());

}

}

5.Controller Advice

WitExceptHandle.java

/*

* Copyright 2016-2017 WitPool.org All Rights Reserved.

*

* You may not use this file except in compliance with the License.

* A copy of the License is located at

* http://witpool.org/licenses

*

* or in the "license" file accompanying this file. This file is distributed

* on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either

* express or implied. See the License for the specific language governing

* permissions and limitations under the License.

*/

package org.witpool.common.handle;

import org.slf4j.Logger;

import org.slf4j.LoggerFactory;

import org.springframework.web.bind.annotation.ControllerAdvice;

import org.springframework.web.bind.annotation.ExceptionHandler;

import org.springframework.web.bind.annotation.ResponseBody;

import org.witpool.common.enums.WitCode;

import org.witpool.common.except.WitException;

import org.witpool.common.model.bean.WitResult;

/**

* @class name: WitExceptHandle

* @description: WitPool Result

* @author Dom Wang

* @date 2017-11-15 PM 3:46:14

* @version 1.0

*/

@ControllerAdvice

public class WitExceptHandle

{

private final static Logger logger = LoggerFactory.getLogger(WitExceptHandle.class);

@ExceptionHandler(value = Exception.class)

@ResponseBody

public WitResult handle(Exception e)

{

if (e instanceof WitException)

{

WitException we = (WitException) e;

return new WitResult(we.getCode(), we.getMessage());

}

else

{

logger.error(WitCode.WIT_ERR_INNER.getMsg() + "{}", e);

return new WitResult(WitCode.WIT_ERR_INNER.getCode(), e.getMessage());

}

}

}

6.Jpa Repository

WitRepository.java

/*

* Copyright 2016-2017 WitPool.org All Rights Reserved.

*

* You may not use this file except in compliance with the License.

* A copy of the License is located at

* http://witpool.org/licenses

*

* or in the "license" file accompanying this file. This file is distributed

* on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either

* express or implied. See the License for the specific language governing

* permissions and limitations under the License.

*/

package org.witpool.persist;

import java.util.List;

import org.springframework.data.jpa.repository.JpaRepository;

import org.witpool.common.model.po.WitUser;

/**

* @Class Name : WitRepository

* @Description: WitPool Repository

* @Author : Dom Wang

* @Email : witpool@outlook.com

* @Date : 2017-11-15 PM 2:50:27

* @Version : 1.0

*/

public interface WitRepository extends JpaRepository

{

public List findByUserName(String userName);

}

7.代码下载、编译、打包

代码下载请访问 github上的 witpool/Wit-Neptune

导入工程文件、编译、打包步骤如下:

Eclipse 导入maven工程

导入Maven工程

Maven打包

8.启动和UT步骤

启动应用:java -jar wit-rest-1.0.jar

UT步骤:

(1). 下载WisdomTool REST Client

(2). 双击 JAR包 restclient-1.1.jar 启动工具

导入测试用例文件:

关于WisdomTool REST Client更多的使用帮助,请参考GitHub wisdomtool/rest-client

总结

以上所述是给大家介绍的Spring Boot 实现Restful webservice服务端示例代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,会及时回复大家的。在此也非常感谢大家对我们网站的支持!


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:路由器管理账号和密码(路由器管理账号和密码在哪里看)
下一篇:浅谈RxJava+Retrofit+OkHttp 封装使用
相关文章

 发表评论

暂时没有评论,来抢沙发吧~