API A-Z: [Phần 1] Database Seeding
backend
4
API
11
White

Tùng Đặng Thanh viết ngày 23/01/2016

Lời mở đầu

API ngày càng phổ biến và chắc chắn ngày càng cần thiết hơn trong quá trình phát triển của ngành Phần Mềm. Dĩ nhiên như anh Phil Sturgeon nói: Mọi Lập trình viên đều cần API, và điều dĩ nhiên là bạn cần biết cách để Làm một cái API. Trong quá trình mình làm việc với các bạntrong team thì các bạn thường khó hình dung ra API là cái gì và kết hợp Front End ra sao, hay các quy tắc để viết một API là gì? .... nên mình viết một chuổi bài trên này để giải đáp phần nào thắc mắc đó. Ngoài Series này ra thì mình làm thêm 1 vài Series kết hợp thực tế cho các bạn dễ hình dung bằng Codeigniter hay Laravel, Rails...

Khái niệm thì các bạn Google cho nhanh nhé

Database Seeding

I Nó là gì thế nhẩy?

À mà vâng, các bạn hiểu như sau cho dễ: Khi làm đồ án trên trường đó, mỗi lần làm các bạn phải có chút chút dữ liệu mẫu cho Thầy xem chứ (Hồi đó nhóm mình 6 người, làm quản lý bán sách có 3 cuốn sách và 1 khách hàng lận luôn). Việc tạo dữ liệu mẫu thì khỏi nói, ôi thôi chán ngắt, nếu có 1 vài dòng thì không sao, lỡ anh sếp đẹp trai hay chị sếp xinh gái dễ thương vô địch khắp vũ trụ bảo làm 10000 records mẫu thì thôi hát bài mình chia tay đi là vừa nếu nhập tay ý.

Trong thực tế xíu, Trong môi trường Developement mà thao tác với dữ liệu thực là chết người. Khi có 1 ứng dụng cần viết API mà mình thao tác như gửi mail cho vài ngàn khách hàng thực thay vì dữ liệu mẫu thì hôm sau mình về quê ăn tết sớm luôn đó. Vậy việc đầu tiên sau khi có cái Database xong thì chúng ta sẽ "Dummy Data" hay tạo dữ liệu ảo và tên gọi của việc này là Seeding

II Dạng dữ liệu nào nên xài?

Có thể là:

  • Người dùng ảo
  • Blog hoặc Comment
  • Địa điểm ảo
  • Số điện thoại, Email ảo...
  • Credit Card ảo Nói chung là mọi thứ bạn cần và đúng kiểu dữ liệu là được.

III Xây dựng Seeder

Công cụ

Chúng ta sẽ xài Faker của Francois Zaninotto (PHP nhé)

Link Github

Composer: composer require fzaninotto/faker

Cách xài

<?php
// Trỏ tới thư mục Autoload
require_once '/path/to/Faker/src/autoload.php';

// Tạo đối tượng Faker
$faker = Faker\Factory::create();
// Tạo dữ liệu ảo Tên người dùng
echo $faker->name;
 // Tạo dữ liệu ảo Địa chỉ
echo $faker->address;
  // Tạo dữ liệu ảo Đoạn văn
echo $faker->text;
// Nếu muốn tạo nhiều dữ liệu mẫu cùng lúc thì để trong vòng For nhé
for ($i=0; $i < 10; $i++) {
  echo $faker->name, "\n";
}

Ví dụ với Laravel Framework

<?php
use DB;
use Illuminate\Database\Seeder;
use Illuminate\Database\Eloquent\Model;

use Faker\Factory as Faker;

class DatabaseSeeder extends Seeder
{
    /**
     * Run the database seeds.
     *
     * @return void
     */
    public function run()
    {
        $faker = Faker::create();
        foreach (range(1,10) as $index) {
            DB::table('users')->insert([
                'name' => $faker->name,
                'email' => $faker->email,
                'password' => bcrypt('secret'),
            ]);
        }
    }
}

Kết quả VD:
alt text

Vậy Faker gen được những gì?

À nhiều chứ, các bạn cứ chịu khó đọc Document là được.

<?php
$faker->randomDigit;
$faker->numberBetween(1,100);
$faker->word;
$faker->paragraph;
$faker->lastName;
$faker->city;
$faker->year;
$faker->domainName;
$faker->creditCardNumber;

Lời kết

Để đỡ mệt trong quá trình nhập liệu ảo thì còn chần chờ gì nữa mà bạn không xài Faker. Ở trên là PHP còn dưới đây là 1 vài cái lượm lặt:
Ruby:

Bạn nào thắc mắc thì Comment bên dưới nha, bài này mình viết không phải cho bạn nào mới biết PHP nhé. Nên có thể không hiểu lắm về cách ứng dụng thực tế mình sẽ bổ dung một bài ví dụ củ thể sau

Link bài viết:

Bình luận


White
{{ comment.user.name }}
Bỏ hay Hay
{{comment.like_count}}
Male avatar
{{ comment_error }}
Hủy
   

Hiển thị thử

Chỉnh sửa

White

Tùng Đặng Thanh

2 bài viết.
13 người follow
Kipalog
{{userFollowed ? 'Following' : 'Follow'}}
Cùng một tác giả
White
17 3
Endpoints là gì thế? Sau khi các bạn hoàn thành việc thiết kết Database và Dump hàng loạt dữ liệu ảo vào đó thì công việc tiếp theo của chúng ta c...
Tùng Đặng Thanh viết hơn 2 năm trước
17 3
Bài viết liên quan
White
13 0
Những kĩ năng cần có của một web developer Hiện nay, một lập trình viên có thể lựa chọn cho mình nhiều hướng phát triển: Lập trình nhúng (Embeded ...
Huy Hoàng Phạm viết gần 3 năm trước
13 0
White
16 3
Bài viết được dịch lại từ bản gốc (Link) đăng tại phiên bản blog tiếng Anh của mình. _"Rust có làm được Web không nhỉ?"_ Đây là câu hỏi của rất ...
Huy Trần viết 10 tháng trước
16 3
{{like_count}}

kipalog

{{ comment_count }}

bình luận

{{liked ? "Đã kipalog" : "Kipalog"}}


White
{{userFollowed ? 'Following' : 'Follow'}}
2 bài viết.
13 người follow

 Đầu mục bài viết

Vẫn còn nữa! x

Kipalog vẫn còn rất nhiều bài viết hay và chủ đề thú vị chờ bạn khám phá!