Создание API Java из класса Java - PullRequest
       29

Создание API Java из класса Java

0 голосов
/ 16 августа 2011

У меня есть класс следующего формата:

public class Process extends HttpServlet {
    @Override
protected void doGet(HttpServletRequest request,
        HttpServletResponse response)
        throws ServletException,IOException {
    // TODO Auto-generated method stub
    doPost(request, response);
}

@Override
protected void doPost(HttpServletRequest request,
        HttpServletResponse response)
        throws ServletException,IOException {
 if ((request.getParameter("choice")==null)&&(request.getParameter("term")!=null)){
   Bean b=new Bean(request.getParameter("term"));
  request.setAttribute("bean", b);
  request.getRequestDispatcher("result.jsp").forward(request, response);
  }
  //....many other if checks to dispatch the request to appropriate jsp pages
 }}

Теперь я хочу преобразовать этот класс в API. Я хочу сохранить функциональность его отправки на соответствующие страницы, так как он работает длямое приложение. Но я хочу иметь возможность предоставлять внешний доступ, чтобы другие также могли использовать мое приложение.Прямо сейчас к этому можно получить доступ http://mytest.com/Process?term=test,, и как только я обращаюсь к нему, он перенаправляет ответ на result.jsp.Ответ в основном является моим другим объектом класса (Bean), и result.jsp использует этот объект для вызова различных методов get для извлечения данных.

Чтобы это было доступно извне, я думаю о введении другого параметра в URL,так что с внешней страницы люди могут отправить запрос на http://mytest.com/Process?term=test&request=api, а затем я могу проверить параметр, чтобы определить, если это из внешнего места, но я не знаю, как отправить ответ на внешний клиент, и если это хорошая идея, чтобыотправьте объект клиенту, так как я не думаю, что он будет иметь доступ к классу.

Ответы [ 2 ]

1 голос
/ 16 августа 2011

Теперь я хочу преобразовать этот класс в API

Другими словами, вы хотите предложить его как веб-сервис?


но я не знаю, как отправить ответный ответ внешнему клиенту и если это хорошая идея, чтобы отправить объект клиенту, так как я не думаю, что они будут иметь доступ к классу.

Просто верните его в обычном, фиксированном и заданном формате.Например, JSON или XML или даже CSV .

JSON с помощью Gson :

Bean bean = createItSomehow();

response.setContentType("application/json");
response.setCharacterEncoding("UTF-8");

Gson gson = new Gson();
response.getWriter().write(gson.toJson(bean));

XML с помощью JAXB :

Bean bean = createItSomehow();

response.setContentType("text/xml");
response.setCharacterEncoding("UTF-8");

JAXBContext context = JAXBContext.newInstance(Bean.class);  
Marshaller marshaller = context.createMarshaller();  
marshaller.marshal(bean, response.getOutputStream()); 

API Java EE предлагает JAX-WS и JAX-RS API для этой цели, которая устраняет необходимость возиться с низким уровнем Servlet API шаблонов для достижения требований.

0 голосов
/ 16 августа 2011

Посмотрите на следующую библиотеку. http://www.jboss.org/resteasy. Это довольно легко настроить и начать использовать. С этой библиотекой вы можете отдохнуть в своей оболочке. Дайте мне знать, если это то, что вы хотели сделать?

...