Haruskah situs web menggunakan API publiknya sendiri?

31

Saya mulai menulis layanan web, dan saya telah membangun dengan nodeJS dan pendekatan RESTfulish.

Dari apa yang saya kumpulkan:

  • Keuntungannya adalah Anda tidak perlu menggandakan kode.
  • Kerugiannya adalah Anda:
    • akan sering memperbarui API publik, tetapi harus diselesaikan dengan versi
    • tidak dapat membuat cache dan optimisasi khusus layanan

Apa yang dianggap praktik terbaik? Apakah situs seperti Stack Exchange, Github, Twitter, dll menggunakan API mereka sendiri untuk klien mereka?


sumber
12
Makan dogfood Anda sendiri juga akan mendorong Anda untuk meningkatkan API publik Anda
Ben Brocka
Itulah cara Amazon melakukannya.
OliverS
2
Untuk menambah poin OlverS, lihat Google Platforms Rant
Brian

Jawaban:

37

Anda harus benar-benar menggunakan API Anda sendiri. Konsep ini dikenal luas sebagai dogfooding dan memiliki banyak manfaat selain menghindari duplikasi kode.

  • Perilaku yang konsisten antara situs / produk Anda dan apa yang akan ditulis oleh konsumen API (mis. Harapan mereka terhadap API Anda)
  • Bentuk lain dari pengujian.
  • Anda dapat dan akan menemukan bug di API sebelum pelanggan Anda melakukannya, membuat resolusi mereka lebih murah.

Meskipun saya akan membantah salah satu poin Anda: Anda tidak harus memperbarui API sesering mungkin. Luangkan waktu untuk merancang dan membuktikan API yang akan bertahan untuk sementara waktu. Untungnya, dogfooding dengan cara ini akan menegakkan itu. Di mana Anda baru saja melanggar kode pelanggan sebelumnya, sekarang Anda akan melanggar kode Anda sendiri. Ketika Anda harus , ya versi adalah solusi, tetapi harus dihindari.

Steven Evers
sumber
0

untuk beberapa alasan itu tidak akan membiarkan saya masuk sebagai poster pertanyaan, tapi itu saya. Saya tidak dapat menerima jawaban Anda, seandainya saya bisa, itu masuk akal.

Namun, bagaimana Anda tidak ingin memperbarui API Anda? Bagaimana dengan menambahkan fitur baru, menghapus yang tidak populer, refactoring, dll?

stanm87
sumber
Hei. Ini seharusnya menjadi komentar atas jawabannya - tetapi saya tidak berpikir Anda memiliki cukup perwakilan untuk berkomentar. Pokoknya, intinya adalah Anda tidak harus memperbarui API secara rutin . Dan meskipun begitu, menambahkan fitur baru tidak masalah - tidak dapat merusak kode yang ada. Mengapa menghapus yang tidak populer? Buat mereka usang, dan hapus suatu saat nanti setelah orang-orang punya waktu lama untuk menanggapi penghentian itu.
Maks.
2
Menambahkan metode ke API baik-baik saja, mengubah API yang ada buruk karena akan merusak kode apa pun yang bergantung pada API.
Bryan Oakley
@ stanm87: Max dan Bryan mengatakannya dengan baik. Anda harus menghindari mengubah kontrak API Anda (yaitu antarmuka dan perilaku yang diharapkan, berfungsi,). Orang-orang akan bergantung pada hal itu jika mereka akan menggunakan API Anda dan jika Anda mengubahnya, itu akan merusak kode mereka.
Steven Evers
terima kasih banyak untuk klarifikasi. @ Max Saya memang tidak bisa mengomentari jawabannya
stanm87