OData adalah singkatan dari Open Data Protocol, merupakan protokol akses data berbasis teknologi yang telah digunakan secara luas seperti HTTP, JSON, dan Atom. Pada OData telah didefinisikan bahasa query dalam bentuk URI yang telah disesuaikan, query tersebut merupakan cara standar  yang mengijinkan client memilah data yang diinginkan. Standar di sini artinya memiliki pola yang telah dijadikan standar umum sehingga di manapun ada suatu layanan OData Service, pasti menggunakan pola yang sama untuk mengakses datanya. Untuk penjelasan lengkap mengenai OData telah saya tulis sebelumnya di alamat Postingan Sebelumnya.

Untuk mempersingkat waktu, kita akan mencoba mengakses OData Service publik yang dapat diakses dari internet. Contoh layanan ini tersedia dan bisa dikunjungi di alamat https://www.odata.org/odata-services/ . Salah satu endpoint OData yang akan kita gunakan adalah database Northwind yang memiliki alamat https://services.odata.org/V3/Northwind/Northwind.svc/

Tools yang diperlukan cukup menggunakan browser saja, karena berbasis HTTP dan URI. Atau dapat menggunakan Postman karena menyediakan formating respon sehingga bisa tampil lebih rapi. Berikut contoh contoh hasil dari akses OData terhadap database Northwind.svc

  1. Mengakses Service Document
    https://services.odata.org/V3/Northwind/Northwind.svc/
    

      2. Mengakses Service Metadata

      https://services.odata.org/V3/Northwind/Northwind.svc/$metadata
      

      3. Mengakses List Entity Customer dengan Hasil Format ATOM

      https://services.odata.org/V3/Northwind/Northwind.svc/Customers?$inlinecount=allpages
      

      4. Mengakses List Entity Customer dengan Hasil Format JSON

      https://services.odata.org/V3/Northwind/Northwind.svc/Customers?$inlinecount=allpages&$format=json
      

      5. Mengakses List Customer dan Hanya Menampilkan Kolom CustomerID

      https://services.odata.org/V3/Northwind/Northwind.svc/Customers?$inlinecount=allpages&$format=json&$select=CustomerID
      

      6. Mengakses Data Customer Berdasarkan ID / Primary Key

      https://services.odata.org/V3/Northwind/Northwind.svc/Customers('TOMSP')?$format=json
      

      7. Mengakses Data Customer Berdasarkan ID /Primary Key dengan Hasil Hanya Value Kolom Tertentu

      https://services.odata.org/V3/Northwind/Northwind.svc/Customers('TOMSP')/ContactName/$value
      

      8. Memfilter Data Customer Dan Menampilkan Berdasarkan Urut Kolom Tertentu

      Menampilkan data dengan ContactTitle berisi Owner diurutkan berdasarkan ContactName descending

      https://services.odata.org/V3/Northwind/Northwind.svc/Customers?$inlinecount=allpages&$format=json&$filter=ContactTitle eq 'Owner'&$orderby=ContactName desc
      

      Daftar logical operator yang didukung

      OperatorDescriptionExample
      eqEqual/Customers?$filter=City eq ‘Redmond’
      neNot equal/Customers?$filter=City ne ‘London’
      gtGreater than/Products?$filter=UnitPrice gt 20
      geGreater than or equal/Products?$filter=UnitPrice ge 10
      ltLess than/Products?$filter=UnitPrice lt 20
      leLess than or equal/Products?$filter=UnitPrice le 100
      andLogical and/Products?$filter=UnitPrice le 200 and UnitPrice gt 3.5
      orLogical or/Products?$filter=UnitPrice le 3.5 or UnitPrice gt 200
      notLogical negation/Products?$filter=not endswith(ProductName,’milk’)

      9. Mengakses List Customer dan Menampilkan 10 Data Pada Halaman ke 2

      https://services.odata.org/V3/Northwind/Northwind.svc/Customers?$inlinecount=allpages&$format=json&$skip=10&$top=10&$orderby=ContactName asc
      

      10. Menampilkan Complex Type dari Navigation Property

      Menampilkan detail customer dari data order

      https://services.odata.org/V3/Northwind/Northwind.svc/Orders?$inlinecount=allpages&$format=json&$orderby=OrderID asc&$expand=Customer
      
      https://services.odata.org/V3/Northwind/Northwind.svc/Orders(10249)?$format=json&$expand=Customer
      

      Menampilkan Order detail dari Order dengan Expand hingga dua level

      https://services.odata.org/V3/Northwind/Northwind.svc/Orders(10248)?$format=json&$expand=Order_Details,Order_Details/Product
      
      {
          "odata.metadata": "https://services.odata.org/V3/Northwind/Northwind.svc/$metadata#Orders/@Element",
          "Order_Details": [
              {
                  "Product": {
                      "ProductID": 11,
                      "ProductName": "Queso Cabrales",
                      "SupplierID": 5,
                      "CategoryID": 4,
                      "QuantityPerUnit": "1 kg pkg.",
                      "UnitPrice": "21.0000",
                      "UnitsInStock": 22,
                      "UnitsOnOrder": 30,
                      "ReorderLevel": 30,
                      "Discontinued": false
                  },
                  "OrderID": 10248,
                  "ProductID": 11,
                  "UnitPrice": "14.0000",
                  "Quantity": 12,
                  "Discount": 0
              },
              {
                  "Product": {
                      "ProductID": 42,
                      "ProductName": "Singaporean Hokkien Fried Mee",
                      "SupplierID": 20,
                      "CategoryID": 5,
                      "QuantityPerUnit": "32 - 1 kg pkgs.",
                      "UnitPrice": "14.0000",
                      "UnitsInStock": 26,
                      "UnitsOnOrder": 0,
                      "ReorderLevel": 0,
                      "Discontinued": true
                  },
                  "OrderID": 10248,
                  "ProductID": 42,
                  "UnitPrice": "9.8000",
                  "Quantity": 10,
                  "Discount": 0
              },
              {
                  "Product": {
                      "ProductID": 72,
                      "ProductName": "Mozzarella di Giovanni",
                      "SupplierID": 14,
                      "CategoryID": 4,
                      "QuantityPerUnit": "24 - 200 g pkgs.",
                      "UnitPrice": "34.8000",
                      "UnitsInStock": 14,
                      "UnitsOnOrder": 0,
                      "ReorderLevel": 0,
                      "Discontinued": false
                  },
                  "OrderID": 10248,
                  "ProductID": 72,
                  "UnitPrice": "34.8000",
                  "Quantity": 5,
                  "Discount": 0
              }
          ],
          "OrderID": 10248,
          "CustomerID": "VINET",
          "EmployeeID": 5,
          "OrderDate": "1996-07-04T00:00:00",
          "RequiredDate": "1996-08-01T00:00:00",
          "ShippedDate": "1996-07-16T00:00:00",
          "ShipVia": 3,
          "Freight": "32.3800",
          "ShipName": "Vins et alcools Chevalier",
          "ShipAddress": "59 rue de l'Abbaye",
          "ShipCity": "Reims",
          "ShipRegion": null,
          "ShipPostalCode": "51100",
          "ShipCountry": "France"
      }
      

      Dari contoh cara mengakses OData Service tersebut memungkinkan kita bisa lebih mudah dalam pengambilan data, dikarenakan pola akses query yang sudah standar dan sudah pasti. Terutama ketika kita mengambil data menggunakan Ajax atau client library , akan lebih mudah karena kita cukup memanipulasi URL saja ketika akan melakukan sorting, filtering, atau paging.

      ,


      Leave a Reply

      Your email address will not be published. Required fields are marked *