我试图连接到一个CouchDB,但我似乎找不到一个明确的解释它的任何地方。这是我在C#中尝试过的,但是它什么也不做。
using (var db = new MyCouch.Client("http://127.0.0.1:5984/db"))
{
var db = "{'_id': '1', '$doctype': 'db', 'name': '1'}";
var response = db.Documents.Post(db);
Console.Write(response.GenerateToStringDebugVersion());
}有人能解释我如何连接和如何简单地插入数据吗?
发布于 2015-10-19 03:54:41
连接到System.Net.Http.HttpClient的简单方法是通过使用CouchDB和侧步执行客户端库本身(尽管有一些好的)。
由于CouchDB API是HTTP,GET、PUT POST和DELETE是您需要的主要方法,下面包含了一个通用方法包装PUT的示例,它使用本机JSON接受POCO模型并将其写入文档(为清楚起见而省略的序列化异常处理)。
public async Task<R> Put<T, R>(T docObject)
{
string DbName = "demodb";
string NewDocId = "newDocId";
// Valid paths, methods and response codes are documented here: http://docs.couchdb.org/en/stable/http-api.html
using (var httpClient = new HttpClient())
{
httpClient.BaseAddress = new Uri("http://server:5984/");
httpClient.DefaultRequestHeaders.Accept.Clear();
httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
// NB: PutAsJsonAsync is an extension method defined in System.Net.Http.Formatting
var response = await httpClient.PutAsJsonAsync(DbName + "/" + NewDocId, docObject);
R returnValue;
if (response.StatusCode == HttpStatusCode.OK)
{
returnValue = await response.Content.ReadAsAsync<R>();
}
// Check the docs for response codes returned by each method.
// Do not forget to check for HttpStatusCode.Conflict (HTTP 409) and respond accordingly.
}
}要完成这个示例,返回类型R应该是从CouchDB返回的JSON响应的属性可以反序列化成。
public class CreateResponse
{
// use of JsonPropertyAttribute is supported on properties if needed.
public bool ok { get; set; }
public string id { get; set; }
public string rev { get; set; }
public string error { get; set; }
public string reason { get; set; }
}如果使用基本身份验证,则可以在服务器Url前加上凭据,例如:http://user:pass@server/ (如果使用Cookie身份验证)、使用新CookieContainer设置HttpClientHandler并将处理程序传递给HttpClient构造函数。
两份最后说明:
https://stackoverflow.com/questions/31783533
复制相似问题