Делаю учебную задачу, у меня есть удаленное хранилище ключей,, само апи это три запроса, гет , пост и делит, для создание 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, при запросе пустом возвращает правильный ответ сервера.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Как сделать вот такой запрос от одного php скрипта к другому на моём хостинге?
Как сделать постраничный вывод файлов? Здравствуйте помогите сделать постраничный вывод файловВсе файлы одинаково записаны