Веб-сервис Rest с NetBeans 8.2

Google в «научная нотация regexp» показывает количество совпадений, включая этот (не используйте его !!!!), который использует

*** warning: questionable ***
/[-+]?[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?/

, который включает в себя такие случаи, как -.5e7 и + 00000e33 (оба из которых вы не можете разрешить).

Вместо этого я настоятельно рекомендую использовать синтаксис для Doug Crockford Веб-сайт JSON , который явно документирует, что представляет собой число в JSON. Вот соответствующая синтаксическая диаграмма, взятая с этой страницы:

alt text http://www.json.org/number.gif

Если вы посмотрите на строка 456 его скрипта json2.js (безопасное преобразование в / из JSON в javascript), вы увидите эту часть regexp:

/-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/

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

/-?(?:0|[1-9]\d*)(?:\.\d*)?(?:[eE][+\-]?\d+)?/

, и если вы хотите разрешить начальный +, а также вы получите:

/[+\-]?(?:0|[1-9]\d*)(?:\.\d*)?(?:[eE][+\-]?\d+)?/

Добавьте скобки скобок по своему вкусу.

Я также очень рекомендую вам собрать кучу тестовых примеров, чтобы убедиться, что вы включают те возможности, которые вы хотите включить (или не включать), например:

allowed:
+3
3.2e23
-4.70e+9
-.2E-4
-7.6603

not allowed:
+0003   (leading zeros)
37.e88  (dot before the e)

Удачи!

1
задан Bob5421 18 January 2019 в 15:20
поделиться

1 ответ

Я сделал несколько небольших изменений, чтобы заставить ваш код работать, используя NetBeans 8.2, JDK 8 и Glassfish 4.1.1 в Windows 10:

  • Добавить аннотацию @Path для класса также как methode_test().
  • Добавьте второй класс в pkg1 с именем ApplicationConfig , который расширяет javax.ws.rs.core.Application , как показано ниже.

Это пересмотренный класс TestService:

package pkg1;

import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;


@Path("/demo")
public class TestService
{
    @Path("/test")
    @GET
    @Produces("text/plain")
    public String methode_test()
    {
        return "Hello test";
    }
}

Это дополнительный класс, который нужно добавить:

package pkg1;

import javax.ws.rs.core.Application;

@javax.ws.rs.ApplicationPath("sample")
public class ApplicationConfig extends Application {

}

Мой проект получил название DemoService , и поэтому имел контекстный корень DemoService , но в вашем случае используемый URL-адрес, вероятно, будет следующим: http: // localhost: 8080 / TestService / sample / demo / test

browser

Примечания:

  • См. этот ответ для SO вопрос Что такое жизненный цикл класса Application службы отдыха? для более подробной информации о том, почему вам нужно создать класс, расширяющий этот класс Application .
  • Для удобства вы можете установить путь по умолчанию, который будет использоваться в браузере при тестировании вашего проекта:

    • Откройте окно Свойства вашего проекта из [ 1137] Панель проектов .
    • Выберите , запустите и установите значения Контекстный путь и Относительный URL в зависимости от ситуации:

      [1112 ] browserDefaultURL

  • NetBeans 8.2 предоставляет базовое REST-приложение « Hello World », которое можно создать всего несколькими секунд с помощью мастера проектов: Файл> Новый проект ...> Образцы> Веб-службы> REST: Hello World .

0
ответ дан skomisa 18 January 2019 в 15:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: