我有一个API(asp net core 3.1)和一个Web应用程序(asp net Blazor WebAssembly)。 在我的API中,我有一个CustomerController,它具有以下用于POST的方法:
import java.util.*;
public class GroupAnagramsTogether {
public static void main(String[] args)
{
String [] input = new String [] {"bad", "app", "sad", "mad", "dab","pge", "bda", "ppa", "das", "dba"};
System.out.println("Input: " + Arrays.toString(input));
List<List<String>> result = groupAnagram(input);
System.out.println(result);
}
private static List<List<String>> groupAnagram(String[] input)
{
List<List<String>> list = new ArrayList<List<String>>();
HashMap<String, List<String>> mp = new HashMap<String, List<String>>();
for(String s : input)
{
char[] ch = s.toCharArray();
Arrays.sort(ch);
String key = new String(ch);
if(mp.containsKey(key))
{
mp.get(key).add(s);
}
else
{
List<String> strList = new ArrayList<String>();
strList.add(s);
mp.put(key,strList);
}
}
list.addAll(mp.values());
return list;
}
}
在我的Web应用程序中,我有DataServiceHelper类,该类在该Web应用程序的实际数据服务中使用。这里我有POST和GET的方法,等等:
[HttpPost]
public async
Task<ActionResult>
CreateOrderAsync(OrderDto orderDto)
{
orderDto.IdOrder =
await repository
.CreateOrderAsync(mapper.Map<Order>(orderDto));
return CreatedAtRoute(nameof(GetOrderByIdAsync),
new { idOrder = orderDto.IdOrder }, orderDto);
}
如果我将POST请求发送到API(例如通过Postman),则响应包含(其中包括)主体,这是我的数据库对象的JSON版本。我可以使用JsonSerializer在Web应用程序中以某种方式捕获该正文并将其返回,就像使用FindOneByIdAsync方法一样吗? 或者,可以在API中,是否可以在响应标头中创建一个仅包含数据库为新对象创建的Id的新标头,然后从响应中将其捕获到我的Web应用程序post方法中?
答案 0 :(得分:0)
可能有点笨拙,但这可行:
static public async Task<T>PostAndListenAsync(HttpClient httpClient, string endpoint, T item)
{
var content = await httpClient.PostAsJsonAsync(endpoint, item);
var stream = await content.Content.ReadAsStreamAsync();
T t = await JsonSerializer.DeserializeAsync<T>(stream, new JsonSerializerOptions() { PropertyNameCaseInsensitive = true });
return t;
}
随时用它制成整洁的单线纸。
我的数据服务:
public async Task<OrderDto> PostOrderAsync(OrderDto orderDto)
{
return await DataServiceHelper<OrderDto>.PostAndListenAsync(httpClient, "/Orders", orderDto);
}
在剃须刀中:
...
private async Task CreateNewOrder()
{
OrderDto orderDto = await dataService.PostOrderAsync(newOrder);
}
...