получать запросы в web servce rest на c #?

#c# #asp.net #vb.net #rest #web-services

#c# #asp.net #vb.net #rest #веб-сервисы

Вопрос:

У меня есть проект rest api веб-сервиса на C # (basic) в VS, я программирую метод POST, который на данный момент ничего не делает, он проверяет только поступление информации или то, что я думаю, что это так. ха, что я хочу знать: когда я отправляю цепочку Json из клиентской программы, чтобы иметь возможность отлаживать прием запроса, отправленного с моего веб-сервиса. Я хочу посмотреть, как поступает мой запрос.

Веб-сервис создан с использованием шаблонов, которые представлены в качестве примера в Visual Studio, в котором говорится, что web API fullRest, добавьте папку controllers, в которой расположены методы POST и GET моего веб-сервиса. В основном мой проект очень простой, все запрограммировано шаблоном, я просто добавил методы.

вот мой код для метода POST в моем веб-сервисе rest:

 [Route("api/prueba")]
    [HttpPost]
    public HttpResponseMessage Post([FromBody] datosTarjeta datoTarjeta )
    {
        try
        {
            if (datoTarjeta != null)
            {
                var respuesta = new HttpResponseMessage(HttpStatusCode.OK);

                return respuesta;
            }
        }
        catch (Exception ex)
        {
            var respuesta = new HttpResponseMessage(HttpStatusCode.BadRequest);
            return respuesta;
        }
        var respuesta1 = new HttpResponseMessage(HttpStatusCode.BadRequest);
        return respuesta1;

    }

}
  

Это код, который отправил строку Json в веб-службу, она находится в VB.net , который отправляет строку Json:

 Imports System
Imports System.Net
Imports System.Text
Imports System.Threading
Imports Newtonsoft.Json

Public Async Sub metodoPost()
    Dim t As New datosTarjeta
    t.Ln_Tarj = "PRO1"
    t.Fiid_Tarj = "B062"
    t.Numero_de_tarjeta = "5359430105739184   "

    Try
        Dim url As String

        url = "http://localhost:60973/api/rest"

        Dim cliente As New Http.HttpClient
        Dim JsonData As String = JsonConvert.SerializeObject(t)
        Dim restContenido As New Http.StringContent(JsonData, Encoding.UTF8, "application/json")
        Dim restRespuesta As Http.HttpResponseMessage = Await cliente.PostAsync(url, restContenido)
        Thread.Sleep(200000)
        Console.WriteLine(restRespuesta.StatusCode.ToString)

    Catch e As Exception
        Dim mensaje As String

        mensaje = e.Message

    End Try


End Sub
  

Если бы вы могли помочь мне узнать, в какой момент запрос попадает в веб-службу или как я могу запрограммировать метод, чтобы запрос поступал в веб-службу и мог видеть, как поступает запрос.
Спасибо.

Комментарии:

1. Вы пытаетесь понять маршрутизацию?

Ответ №1:

Этот запрос, вероятно, не поступит, потому что вы сообщили серверу, что маршрут api/prueba :

 [Route("api/prueba")]
[HttpPost]
public HttpResponseMessage Post([FromBody] datosTarjeta datoTarjeta )
  

А в клиенте, на который вы отправили сообщение api/rest

 url = "http://localhost:60973/api/rest"
  

Прежде всего, я рекомендую вам не пытаться писать клиент и сервер. Просто напишите сервер и используйте Postman, чтобы вставить в него данные, проверьте, работает ли он.. затем напишите клиент. Борьба с ошибками вашего собственного клиента, а также попытки правильно настроить его конфигурацию — это головная боль, которая вам не нужна. Postman — надежный и хороший инструмент для отправки JSON в RESTful webserviecs, как у вас здесь. Установите точку останова в верхней части метода Post (назовите это как-нибудь иначе, например.. что он делает: UpdateUser, CreateOrder, ChangeShippingAddress и т. Д.) Затем поместите URL-адрес и данные в postman и нажмите Go; ваш серверный код должен сломаться, и вы можете пройти через него

Затем вы можете написать свой клиент; введите тот же URL и данные, нажмите Go..


Вероятно, вы могли бы несколько упростить свою жизнь, добавив на свой сервер что-то вроде Swashbuckle, Swagger-Net или пакета NSwag, а затем используя Add REST Client функцию в VS или инструмент автоматического восстановления (или, по-видимому, NSwag тоже генерирует код на стороне клиента)..

Все это «создание клиента путем создания HTTP-запроса вручную» — скучно, повторяющееся и т. Д.; Вы не «получали и анализировали HTTP-запрос вручную» На стороне сервера, так почему бы не использовать технологию для написания клиентской части для вас; swagger описывает сервис стандартным способомэто означает, что другой инструмент может использовать описание и писать код на стороне клиента, который имеет красиво названные методы и т. Д

Это похоже на старые времена с WCF / ASMX / SOAP / XML / «Добавить ссылку на службу» (за исключением тех дней, когда это было проще и надежнее)