Не работает запрос к web api. Как исправить?

141
25 марта 2019, 21:40

Делаю учебную задачу, у меня есть удаленное хранилище ключей,, само апи это три запроса, гет , пост и делит, для создание api использую, Nancy, Asp.netcore, Kestrel. Код. Сам сервис.

using System.Collections.Concurrent;
using System.Net.Http;
using System.Threading.Tasks;
namespace WebApplication11
{
    public class BaconIpsumMessage
    {
        public string Key { get; set; }
        public string Value { get; set; }
    }
    public interface IBaconIpsumService
    {
        void AddEntry(string key, string value);
        BaconIpsumMessage GetEntry(string key);
        void RemoveEntry(string key);
    }
    public class BaconIpsumService : IBaconIpsumService
    {
        private ConcurrentDictionary<string, string> entries = new ConcurrentDictionary<string, string>();
        public ConcurrentDictionary<string, string> StorageEntries
        {
            get => entries;
            private set { }
        }

        public void AddEntry(string key, string value)
        {
            entries.AddOrUpdate(key, value, (thisKey, oldValue) => oldValue != value ? value : oldValue);
        }
        public BaconIpsumMessage GetEntry(string key)
        {
            return entries.TryGetValue(key, out var value) ? new BaconIpsumMessage { Key = key, Value = value } : null;
        }
        public void RemoveEntry(string key)
        {
            entries.TryRemove(key, out var value);
        }
    }
}

Nancy

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Nancy;
using Nancy.ModelBinding;
namespace WebApplication11
{
    public class BaconIpsumModule : NancyModule
    {
        private IBaconIpsumService storage;
        public BaconIpsumModule(IBaconIpsumService inject)
        {
            storage = inject;
            Get("/api{key}", args =>
            {
                if (storage.GetEntry(args.key) is BaconIpsumMessage entry)
                    return entry;
                return HttpStatusCode.NoContent;
            });
            Post("/api/{key}", args =>
            {
                BaconIpsumMessage entry = this.Bind<BaconIpsumMessage>();
                if (string.IsNullOrWhiteSpace(entry.Key) || string.IsNullOrWhiteSpace(entry.Value))
                {
                    return HttpStatusCode.BadRequest;
                }
                storage.AddEntry(entry.Key, entry.Value);
                return HttpStatusCode.OK;
            });
            Delete("/api{key}", args =>
            {
                storage.RemoveEntry(args.key);
                return HttpStatusCode.OK;
            });
        }
    }
}

Сервер поднимается, и работает, но при использовании запроса Post, ошибка Бед реквест. При запросе Get, при запросе пустом возвращает правильный ответ сервера.

READ ALSO
Подключение файлов в PHP множество раз

Подключение файлов в PHP множество раз

Всем доброго времени сутокЯ тут делаю плохую штуку

167
PHP | Запрос по типу Callback API к php скрипту

PHP | Запрос по типу Callback API к php скрипту

Как сделать вот такой запрос от одного php скрипта к другому на моём хостинге?

210
Как сделать постраничный вывод файлов?

Как сделать постраничный вывод файлов?

Как сделать постраничный вывод файлов? Здравствуйте помогите сделать постраничный вывод файловВсе файлы одинаково записаны

184