Как подделать сторонний API

Sep 03 2020

Наше приложение обращается к стороннему API для выполнения нескольких задач.

У этой конечной точки есть проблема в тестовой среде, и руководство попросило нас смоделировать эту среду, поэтому, когда приложение или кто-либо пытается позвонить на www.test.com с тестовой машины, оно получает информацию с фиктивного сервера, а не с фактического www. .test.com .

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

Я пытаюсь выяснить, каким образом всякий раз, когда кто-то звонит на www.test.com, он должен показывать контент с localhost.

Я не хочу редактировать файл хоста. Есть ли другой способ?

Обновлять:

Сделано приложение настраиваемым, поэтому мы можем указать, какую конечную точку должно вызывать приложение.

Я использовал Mockserver в почтальоне, чтобы смоделировать это. Но postmand не поддерживает параметр запроса

поэтому для v1 / api? q = 1 и v1 / api? q = 2 он возвращает тот же ответ

Может ли кто-нибудь помочь, как создать mockserver, который дает разные ответы для разных запросов parmaeter

Ответы

1 NielsvanReijmersdal Sep 04 2020 at 18:11

У нас есть хороший опыт работы с json-сервером. Мы нашли это действительно гибким.

Получите полный поддельный REST API с нулевым кодированием менее чем за 30 секунд (серьезно)

Создано с помощью <3 для фронтенд-разработчиков, которым нужен быстрый бэкэнд для создания прототипов и имитаций.

https://github.com/typicode/json-server

Он может работать со статическими json-файлами, где каждый идентификатор возвращает другое значение. Или вы можете использовать JavaScript для их создания. Вы можете изменить данные на основе идентификатора, предоставить случайные данные, повернуть наборы данных и т. Д.

У них также есть версия, размещенная для вас, если вы хотите протестировать через Интернет. Небольшие наборы данных бесплатны:https://my-json-server.typicode.com/

1 Moro Sep 05 2020 at 14:53

Согласно документам Postman :

Если точное совпадение не найдено, Postman вернет наиболее подходящий ответ на основе своего алгоритма.

Я протестировал фиктивный сервер, и он действительно работает с параметрами запроса, однако алгоритм указывает на значение по умолчанию, когда вы не имитируете параметр. В моем случае:

?id=1указывает 200с okстраницы
?id=2точек на 404с bad requestстраницы
?id=3и так далее не будет реализован и фиктивный сервер возвращает 200с okстраницы.

1 dzieciou Sep 05 2020 at 15:16

Если вы принимаете насмешку с другими пакетами, кроме Postman, я предлагаю использовать MockServer или WireMock , оба из которых поддерживают описание правил сопоставления в Java и JSON.

Например, с WireMock вы можете сопоставить HTTP-запрос по URL-адресу и строке запроса следующим образом :

Сопоставление регулярных выражений по пути и запросу

Ява:

urlMatching("/your/([a-z]*)\\?and=query")

JSON:

{
  "request": {
    "urlPattern": "/your/([a-z]*)\\?and=query"
    ...
  },
  ...
}
1 QuantumNinja Sep 10 2020 at 07:24

Можете ли вы настроить параметры env, а затем использовать их для управления API-интерфейсами вашего приложения? Вы можете использовать это, чтобы легко установить адреса API для разработки, тестирования и производства.