Использование EntityDataService из JavaScript

advertisement
Использование EntityDataService из
JavaScript
Для улучшения читабельности URI, полный путь к EntityDataService не указан, для
того, чтобы примеры заработали в браузере, нужно указывать полный путь,
например:
http://tscoredev5:88/BPMonline530Solution/0/ServiceModel/EntityDataService.svc/
1. Запросы на выборку данных
Выборка контакта по конкретному Id
EntityDataService.svc/ContactCollection(guid'992a72ac-4c50-4ad4-a9080005fa39f9d0')
Выборка колонок Id, BirthDate и имени Ответственного
EntityDataService.svc/ContactCollection(guid'992a72ac-4c50-4ad4-a9080005fa39f9d0')?$expand=Owner&$select=Owner/Name,Id,BirthDate
Выборка имени страны по городу из контакта
EntityDataService.svc/ContactCollection(guid'5B62E943-155F-42CE-A41AEFA650BAA0A0')?$expand=City/Country&$select=City/Country/Name
2. Запросы на добавление данных
Для того, чтобы добавить запись, нужно послать серверу POST запрос,
указав значения колонок в теле запроса. В качестве ответа придет
представление созданной Entity. Ниже создается контакт, ему
проставляются значения полей Id, Name, BirthDate, Gender. Данные в обе
стороны передаются в формате JSON.
Пример запроса на добавление с использованием API Sencha Touch
var serviceUrl =
"http://tscoredev5:88/BPMonline540Solution/0/ServiceModel/EntityDataService.svc
/";
Ext.Ajax.request({
url: serviceUrl + 'ContactCollection',
headers: {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Authorization': 'Basic ' + Ext.util.base64.encode('S.Karlo:S.Karlo')
},
jsonData: {
Id: 'C624E607-C6B2-4A3D-9E6D-06E17FAA35C9',
Name: 'John Best',
BirthDate: new Date(123321123321),
Gender: {__metadata: { uri: serviceUrl +
'GenderCollection(guid\'FC2483F8-65B6-DF11-831A-001D60E938C6\')' }}
},
method: 'POST'
});
3. Запросы на обновление данных
Для обновления данных нужно послать HTTP запрос с кастомным ODataспецифическим типом операции MERGE. если послать запрос с типом
операции PUT, то все колонки Entity, не указанные в запросе будут
заполнены своими значениями по-умолчанию.
Пример запроса на обновление с использованием API Sencha Touch
var serviceUrl =
"http://tscoredev5:88/BPMonline540Solution/0/ServiceModel/EntityDataService.svc
/";
Ext.Ajax.request({
url: serviceUrl + 'ContactCollection(guid\'5B62E943-155F-42CE-A41AEFA650BAA0A0\')',
headers: {
'Content-Type': 'application/json',
'Authorization': 'Basic ' + Ext.util.base64.encode('S.Karlo:S.Karlo')
},
jsonData: {
Name: 'John',
BirthDate: new Date(123321123321),
Gender: {__metadata: { uri: 'GenderCollection(guid\'FC2483F8-65B6DF11-831A-001D60E938C6\')' }}
},
method: 'MERGE'
});
4. Запросы на удаление данных
Тут все просто:
Пример запроса на удаление с использованием API Sencha Touch
var serviceUrl =
"http://tscoredev5:88/BPMonline540Solution/0/ServiceModel/EntityDataService.svc
/";
Ext.Ajax.request({
url: this.serviceUrl + 'ContactCollection(guid\'C624E607-C6B2-4A3D-9E6D06E17FAA35C9\')',
headers: {
'Authorization': 'Basic ' + Ext.util.base64.encode('S.Karlo:S.Karlo')
},
method: 'DELETE'
});
Download