RESTClient调试RESTful Webservice
发布时间:2020-12-16 22:55:54 所属栏目:安全 来源:网络整理
导读:本文讨论用火狐浏览器调试RESTful Webservice 1、下载RESTClient插件 点击添加组件,搜索RESTClient,点击下载。 2、发布一个RESTful Webservice应用程序 CXF和Spring完美集合, 1)web.xml配置,配置拦截webservice请求映射 servletservlet-nameCXFServlet/
本文讨论用火狐浏览器调试RESTful Webservice 1、下载RESTClient插件 点击添加组件,搜索RESTClient,点击下载。 2、发布一个RESTful Webservice应用程序 CXF和Spring完美集合, 1)web.xml配置,配置拦截webservice请求映射 <servlet> <servlet-name>CXFServlet</servlet-name> <servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>CXFServlet</servlet-name> <url-pattern>/rest/*</url-pattern> </servlet-mapping> <!--RESTful schema文件--> xmlns:jaxrs="http://cxf.apache.org/jaxrs" http://cxf.apache.org/jaxrs http://cxf.apache.org/schemas/jaxrs.xsd <!-- 服务bean --> <bean id="mailService" class="com.deppon.uums.mail.server.service.impl.MailService" /> <!-- 使用restful方式服务 --> <jaxrs:server id="uumsMailService" address="/ws"> <jaxrs:serviceBeans> <ref bean="mailService" /> </jaxrs:serviceBeans> <jaxrs:extensionMappings> <entry key="json" value="application/json" /> <entry key="xml" value="application/xml" /> </jaxrs:extensionMappings> <jaxrs:providers> <!-- json解析器 --> <bean class="org.apache.cxf.jaxrs.provider.JSONProvider" /> </jaxrs:providers> </jaxrs:server> 3)webservice接口,用于被外界调用的接口 /** * * <p>邮件服务接口</p> * @author Stephen * @date Mar 30,2015 */ @Path("/mail") public interface IMailService extends IService { /** * * <p>发送邮件</p> * @author Stephen * @since 1.0 * @param mailInfo 邮件信息参数, <span style="white-space:pre"> </span> * json格式:{"sender":"ruixiaolei@deppon.com","recievers":["W01130603@deppon.com","W01140606@deppon.com"]} * @return 返回处理后的结果,成功和失败的列表 * <li>sucess 邮件成功 * <li>failed 邮件失败 */ @Consumes({MediaType.APPLICATION_JSON,MediaType.APPLICATION_XML}) @Produces({MediaType.APPLICATION_JSON,MediaType.APPLICATION_XML}) @POST //方法为POST @Path("/sendmail") public String sendMail(String mailInfo); } 5)webservice接口实现类,用于具体业务逻辑实现 package com.deppon.uums.mail.server.service.impl; import java.util.ArrayList; import java.util.Arrays; import java.util.HashMap; import java.util.List; import java.util.Map; import javax.annotation.Resource; import net.sf.json.JSONObject; import org.apache.commons.lang.StringUtils; import org.springframework.transaction.annotation.Transactional; import com.deppon.uums.mail.server.dao.impl.MailDao; import com.deppon.uums.mail.server.service.IMailService; import com.deppon.uums.mail.shared.domain.DeptEntity; import com.deppon.uums.mail.shared.domain.MailRequestEntity; import com.deppon.uums.mail.shared.domain.SenderEntity; /** * <p>邮件服务实现类</p> * 记录日志信息,以后再做,若果有要求的话,例如提供页面查看发送邮件的信息,每天发邮件数量,峰值、失败原因、服务器压力等。 * @author Stephen * @date Mar 31,2015 * @since 1.0 */ @Transactional public class MailService implements IMailService { @Resource private MailDao mailDao; private static final String OFFICE_NAME = "办公室"; private static final String NOT_PERMITTED = "不能跨系统发邮件,例如人力资源本部人员不能群发给企业发展办公室任一部门!"; private static final String NOT_MATCHED = "邮箱不符合规则,邮箱应该是xxx@deppon.com等!"; private static final String NOT_FOUND = "在UUMS系统里查不到其邮件,可能历史原因,请联系IT热线手动给其加上邮件信息!"; @Override public String sendMail(String mailInfo) { /** * 处理后的邮件信息 */ String mailMessage = ""; String sender = ""; //发件人 List<String> recievers = new ArrayList<String>(); //收件人列表 List<String> empMail = new ArrayList<String>(); //个人邮件 List<String> deptMail = new ArrayList<String>(); //部门邮件 Map<String,List<String>> message = new HashMap<String,List<String>>(); List<String> success = new ArrayList<String>(); List<String> failed = new ArrayList<String>(); if (StringUtils.isNotBlank(mailInfo)) { //将json数据解析成对象 JSONObject object = JSONObject.fromObject(mailInfo); MailRequestEntity mailEntity = (MailRequestEntity) JSONObject.toBean(object,MailRequestEntity.class); sender = mailEntity.getSender(); recievers = mailEntity.getRecievers(); //对收件人列表进行过滤,把个人过滤掉 for(String mail : recievers){ if (!mail.contains("@deppon.com")) { //不是德邦内部邮箱不允许发邮件 failed.add(mail + ":" + NOT_MATCHED); } else { if (mail.startsWith("W")) { deptMail.add(mail); } else { empMail.add(mail); } } } //从数据库查找发件人信息 SenderEntity senderDept = mailDao.queryBySender(sender); //从数据库查找部门收件人列表 List<DeptEntity> deptList = mailDao.queryByRecivers(deptMail); //发件人邮件在UUMS系统里可能查不到,历史原因 if(senderDept == null){ failed.add(sender + ":" + NOT_FOUND); message.put("failed",failed); } if (senderDept != null && deptList != null) { String empDeptName = senderDept.getDeptName(); String empDeptId = senderDept.getDeptId(); //发送人的部门是办公室,则发送人的权限和办公室部门的上级部门拥有相同的权限 if (empDeptName.contains(OFFICE_NAME)) { empDeptId = senderDept.getParentId(); } for(DeptEntity dept : deptList) { String deptSeq = dept.getDeptSeq(); deptSeq = deptSeq.substring(1,deptSeq.length()-1); List<String> recDepts = Arrays.asList(deptSeq.split(".")); //部门收件人部门id列表 if (recDepts.contains(empDeptId)) { //如果收件人的序列包含发件人,则可以发送 success.add(dept.getDeptEmail() + ":" + dept.getDeptName()); } else { failed.add(dept.getDeptEmail() + ":" + dept.getDeptName() + ":" + NOT_PERMITTED); } } success.addAll(empMail); //把个人邮箱列表添加到成功集合里 message.put("success",success); message.put("failed",failed); } //将处理结果返回给调用者 mailMessage = JSONObject.fromObject(message).toString(); } return mailMessage; } } 6)webservice测试,使用代码测试,启动tomcat服务器 @Test public void testMail() throws Exception { String mailInfo = "{'sender':'ruixiaolei@deppon.com'," + "'recievers':['W011302050602@deppon.com','W01130603@deppon.com'," + "'W01140606@deppon.com','W01140518@deppon.com']}"; WebClient client = WebClient.create("http://localhost:8088/uums-mail/rest/ws/"); String result = client.path("mail/sendmail"). accept(MediaType.APPLICATION_JSON).post(mailInfo,String.class); if (StringUtils.isNotBlank(result)) { System.out.println(result); } } {"failed":["W011302050602@deppon.com:宁波鄞州区姜山营业部:不能跨系统发邮件,例如人力资源本部人员不能群发给企业发展办公室任一部门!"], "success":["W01140606@deppon.com:郑州转运中心","W01130603@deppon.com:郑州大区","W01140518@deppon.com:安徽北部大区"]} 7)使用RESTClient插件测试,得到的结果如下: (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |