java rest 服务_第一个Java Rest服务

packagecom.example;importjavax.ws.rs.GET;importjavax.ws.rs.PUT;importjavax.ws.rs.Path;importjavax.ws.rs.Produces;importjavax.ws.rs.QueryParam;importjavax.ws.rs.core.MediaType;importcom.example.dao.DeviceDao;importcom.example.domain.Device;

@Path("device")public classDeviceResource {private finalDeviceDao deviceDao;publicDeviceResource() {

deviceDao= newDeviceDao();

}

@GET

@Produces({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })public Device get(@QueryParam("ip") finalString deviceIp) {

Device result= null;if (deviceIp != null) {

result=deviceDao.getDevice(deviceIp);

}returnresult;

}

@PUT

@Produces({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })public Device put(finalDevice device) {

Device result= null;if (device != null) {

result=deviceDao.updateDevice(device);

}returnresult;

}

}

package com.example.domain;

import javax.xml.bind.annotation.XmlAttribute;

import javax.xml.bind.annotation.XmlRootElement;

@XmlRootElement(name = "device")

public class Device {

private String deviceIp;

private int deviceStatus;

public Device() {

}

public Device(String deviceIp) {

super();

this.deviceIp = deviceIp;

}

@XmlAttribute

public String getIp() {

return deviceIp;

}

public void setIp(String deviceIp) {

this.deviceIp = deviceIp;

}

@XmlAttribute

public int getStatus() {

return deviceStatus;

}

public void setStatus(int deviceStatus) {

this.deviceStatus = deviceStatus;

}

}

package com.example.dao;

import java.util.concurrent.ConcurrentHashMap;

import com.example.domain.Device;

public class DeviceDao {

ConcurrentHashMap fakeDB = new ConcurrentHashMap<>();

public DeviceDao() {

fakeDB.put("10.11.58.163", new Device("10.11.58.163"));

fakeDB.put("10.11.58.184", new Device("10.11.58.184"));

}

public Device getDevice(String ip) {

return fakeDB.get(ip);

}

public Device updateDevice(Device device) {

String ip = device.getIp();

fakeDB.put(ip, device);

return fakeDB.get(ip);

}

}

packagecom.example;importjavax.ws.rs.client.Client;importjavax.ws.rs.client.ClientBuilder;importjavax.ws.rs.client.Entity;importjavax.ws.rs.client.WebTarget;importjavax.ws.rs.core.MediaType;importorg.glassfish.grizzly.http.server.HttpServer;importorg.junit.After;importorg.junit.Assert;importorg.junit.Before;importorg.junit.Test;importcom.example.domain.Device;public classDeviceResourceTest {privateHttpServer server;privateWebTarget target;

@Beforepublic void setUp() throwsException {

server=Main.startServer();final Client c =ClientBuilder.newClient();

target=c.target(Main.BASE_URI);

}

@Afterpublic void tearDown() throwsException {

server.shutdownNow();

}

@Testpublic voidtestGetDevice() {final String testIp = "10.11.58.184";final Device device = target.path("device").queryParam("ip", testIp).request().get(Device.class);

Assert.assertEquals(testIp, device.getIp());

}

@Testpublic voidtestUpdateDevice() {final String testIp = "10.11.58.163";final Device device = newDevice(testIp);

device.setStatus(1);

Entity entity =Entity.entity(device, MediaType.APPLICATION_XML_TYPE);final Device result = target.path("device").request().put(entity, Device.class);

Assert.assertEquals(1, result.getStatus());

}

}

测试方式 1:通过DeviceResourceTest

2:通过google postman插件

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值