Upgrade to Pro — share decks privately, control downloads, hide ads and more …

flask restful

flask restful

Python CodeLabs - Introduction to Flask-RESTful & Flask-HTTPAuth
http://eueung.github.io/python/flask-restful

Eueung Mulyana

November 28, 2015
Tweet

More Decks by Eueung Mulyana

Other Decks in Programming

Transcript

  1.  Flask-RESTful
    Flask-HTTPAuth
    Eueung Mulyana
    http://eueung.github.io/python/flask-restful
    Python CodeLabs | Attribution-ShareAlike CC BY-SA
    1 / 20

    View full-size slide

  2.  Flask-RESTful
    2 / 20

    View full-size slide

  3. Example #1
    f
    r
    o
    m f
    l
    a
    s
    k i
    m
    p
    o
    r
    t F
    l
    a
    s
    k
    f
    r
    o
    m f
    l
    a
    s
    k
    .
    e
    x
    t i
    m
    p
    o
    r
    t r
    e
    s
    t
    f
    u
    l
    a
    p
    p = F
    l
    a
    s
    k
    (
    _
    _
    n
    a
    m
    e
    _
    _
    )
    a
    p
    i = r
    e
    s
    t
    f
    u
    l
    .
    A
    p
    i
    (
    a
    p
    p
    )
    #
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    c
    l
    a
    s
    s H
    e
    l
    l
    o
    W
    o
    r
    l
    d
    (
    r
    e
    s
    t
    f
    u
    l
    .
    R
    e
    s
    o
    u
    r
    c
    e
    )
    :
    d
    e
    f g
    e
    t
    (
    s
    e
    l
    f
    )
    :
    r
    e
    t
    u
    r
    n {
    '
    h
    e
    l
    l
    o
    '
    : '
    w
    o
    r
    l
    d
    '
    }
    #
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    a
    p
    i
    .
    a
    d
    d
    _
    r
    e
    s
    o
    u
    r
    c
    e
    (
    H
    e
    l
    l
    o
    W
    o
    r
    l
    d
    , '
    /
    '
    )
    #
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    i
    f _
    _
    n
    a
    m
    e
    _
    _ =
    = '
    _
    _
    m
    a
    i
    n
    _
    _
    '
    :
    a
    p
    p
    .
    r
    u
    n
    (
    d
    e
    b
    u
    g
    =
    T
    r
    u
    e
    )
    3 / 20

    View full-size slide

  4. f
    r
    o
    m f
    l
    a
    s
    k i
    m
    p
    o
    r
    t F
    l
    a
    s
    k
    , r
    e
    q
    u
    e
    s
    t
    f
    r
    o
    m f
    l
    a
    s
    k
    .
    e
    x
    t
    .
    r
    e
    s
    t
    f
    u
    l i
    m
    p
    o
    r
    t R
    e
    s
    o
    u
    r
    c
    e
    , A
    p
    i
    a
    p
    p = F
    l
    a
    s
    k
    (
    _
    _
    n
    a
    m
    e
    _
    _
    )
    a
    p
    i = A
    p
    i
    (
    a
    p
    p
    )
    t
    o
    d
    o
    s = {
    }
    #
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    c
    l
    a
    s
    s T
    o
    d
    o
    S
    i
    m
    p
    l
    e
    (
    R
    e
    s
    o
    u
    r
    c
    e
    )
    :
    d
    e
    f g
    e
    t
    (
    s
    e
    l
    f
    , t
    o
    d
    o
    _
    i
    d
    )
    :
    r
    e
    t
    u
    r
    n {
    t
    o
    d
    o
    _
    i
    d
    : t
    o
    d
    o
    s
    [
    t
    o
    d
    o
    _
    i
    d
    ]
    }
    d
    e
    f p
    u
    t
    (
    s
    e
    l
    f
    , t
    o
    d
    o
    _
    i
    d
    )
    :
    t
    o
    d
    o
    s
    [
    t
    o
    d
    o
    _
    i
    d
    ] = r
    e
    q
    u
    e
    s
    t
    .
    f
    o
    r
    m
    [
    '
    d
    a
    t
    a
    '
    ]
    r
    e
    t
    u
    r
    n {
    t
    o
    d
    o
    _
    i
    d
    : t
    o
    d
    o
    s
    [
    t
    o
    d
    o
    _
    i
    d
    ]
    }
    #
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    a
    p
    i
    .
    a
    d
    d
    _
    r
    e
    s
    o
    u
    r
    c
    e
    (
    T
    o
    d
    o
    S
    i
    m
    p
    l
    e
    , '
    /
    <
    s
    t
    r
    i
    n
    g
    :
    t
    o
    d
    o
    _
    i
    d
    >
    '
    )
    #
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    i
    f _
    _
    n
    a
    m
    e
    _
    _ =
    = '
    _
    _
    m
    a
    i
    n
    _
    _
    '
    :
    a
    p
    p
    .
    r
    u
    n
    (
    d
    e
    b
    u
    g
    =
    T
    r
    u
    e
    )
    1
    2
    7
    .
    0
    .
    0
    .
    1 - - [
    2
    3
    /
    N
    o
    v
    /
    2
    0
    1
    5 0
    4
    :
    4
    1
    :
    4
    1
    ] "
    P
    U
    T /
    t
    o
    d
    o
    1 H
    T
    T
    P
    /
    1
    .
    1
    "
    1
    2
    7
    .
    0
    .
    0
    .
    1 - - [
    2
    3
    /
    N
    o
    v
    /
    2
    0
    1
    5 0
    4
    :
    4
    7
    :
    5
    7
    ] "
    G
    E
    T /
    t
    o
    d
    o
    1 H
    T
    T
    P
    /
    1
    .
    1
    "
    Example #2
    $ c
    u
    r
    l h
    t
    t
    p
    :
    /
    /
    l
    o
    c
    a
    l
    h
    o
    s
    t
    :
    5
    0
    0
    0
    /
    t
    o
    d
    o
    1 -
    d "
    d
    a
    t
    a
    =
    R
    e
    m
    e
    m
    b
    e
    r t
    h
    e m
    i
    l
    k
    "
    {
    "
    t
    o
    d
    o
    1
    "
    : "
    R
    e
    m
    e
    m
    b
    e
    r t
    h
    e m
    i
    l
    k
    "
    }
    $ c
    u
    r
    l h
    t
    t
    p
    :
    /
    /
    l
    o
    c
    a
    l
    h
    o
    s
    t
    :
    5
    0
    0
    0
    /
    t
    o
    d
    o
    1
    {
    "
    t
    o
    d
    o
    1
    "
    : "
    R
    e
    m
    e
    m
    b
    e
    r t
    h
    e m
    i
    l
    k
    "
    }
    4 / 20

    View full-size slide

  5. Notes
    Using requests
    f
    r
    o
    m r
    e
    q
    u
    e
    s
    t
    s i
    m
    p
    o
    r
    t p
    u
    t
    , g
    e
    t
    p
    u
    t
    (
    '
    h
    t
    t
    p
    :
    /
    /
    l
    o
    c
    a
    l
    h
    o
    s
    t
    :
    5
    0
    0
    0
    /
    t
    o
    d
    o
    1
    '
    , d
    a
    t
    a
    =
    {
    '
    d
    a
    t
    a
    '
    : '
    R
    e
    m
    e
    m
    b
    e
    r t
    h
    e
    # {
    u
    '
    t
    o
    d
    o
    1
    '
    : u
    '
    R
    e
    m
    e
    m
    b
    e
    r t
    h
    e m
    i
    l
    k
    '
    }
    g
    e
    t
    (
    '
    h
    t
    t
    p
    :
    /
    /
    l
    o
    c
    a
    l
    h
    o
    s
    t
    :
    5
    0
    0
    0
    /
    t
    o
    d
    o
    1
    '
    )
    .
    j
    s
    o
    n
    (
    )
    # {
    u
    '
    t
    o
    d
    o
    1
    '
    : u
    '
    R
    e
    m
    e
    m
    b
    e
    r t
    h
    e m
    i
    l
    k
    '
    }
    5 / 20

    View full-size slide

  6. f
    r
    o
    m f
    l
    a
    s
    k i
    m
    p
    o
    r
    t F
    l
    a
    s
    k
    f
    r
    o
    m f
    l
    a
    s
    k
    .
    e
    x
    t
    .
    r
    e
    s
    t
    f
    u
    l i
    m
    p
    o
    r
    t r
    e
    q
    p
    a
    r
    s
    e
    , a
    b
    o
    r
    t
    , A
    p
    i
    , R
    e
    s
    o
    u
    r
    c
    e
    a
    p
    p = F
    l
    a
    s
    k
    (
    _
    _
    n
    a
    m
    e
    _
    _
    )
    a
    p
    i = A
    p
    i
    (
    a
    p
    p
    )
    T
    O
    D
    O
    S = {
    '
    t
    o
    d
    o
    1
    '
    : {
    '
    t
    a
    s
    k
    '
    : '
    b
    u
    i
    l
    d a
    n A
    P
    I
    '
    }
    ,
    '
    t
    o
    d
    o
    2
    '
    : {
    '
    t
    a
    s
    k
    '
    : '
    ?
    ?
    ?
    ?
    ?
    '
    }
    ,
    '
    t
    o
    d
    o
    3
    '
    : {
    '
    t
    a
    s
    k
    '
    : '
    p
    r
    o
    f
    i
    t
    !
    '
    }
    ,
    }
    #
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    d
    e
    f a
    b
    o
    r
    t
    _
    i
    f
    _
    t
    o
    d
    o
    _
    d
    o
    e
    s
    n
    t
    _
    e
    x
    i
    s
    t
    (
    t
    o
    d
    o
    _
    i
    d
    )
    :
    i
    f t
    o
    d
    o
    _
    i
    d n
    o
    t i
    n T
    O
    D
    O
    S
    :
    a
    b
    o
    r
    t
    (
    4
    0
    4
    , m
    e
    s
    s
    a
    g
    e
    =
    "
    T
    o
    d
    o {
    } d
    o
    e
    s
    n
    '
    t e
    x
    i
    s
    t
    "
    .
    f
    o
    r
    m
    a
    t
    (
    t
    o
    d
    o
    _
    i
    d
    )
    )
    p
    a
    r
    s
    e
    r = r
    e
    q
    p
    a
    r
    s
    e
    .
    R
    e
    q
    u
    e
    s
    t
    P
    a
    r
    s
    e
    r
    (
    )
    p
    a
    r
    s
    e
    r
    .
    a
    d
    d
    _
    a
    r
    g
    u
    m
    e
    n
    t
    (
    '
    t
    a
    s
    k
    '
    , t
    y
    p
    e
    =
    s
    t
    r
    )
    #
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    c
    l
    a
    s
    s T
    o
    d
    o
    L
    i
    s
    t
    (
    R
    e
    s
    o
    u
    r
    c
    e
    )
    :
    d
    e
    f g
    e
    t
    (
    s
    e
    l
    f
    )
    :
    r
    e
    t
    u
    r
    n T
    O
    D
    O
    S
    d
    e
    f p
    o
    s
    t
    (
    s
    e
    l
    f
    )
    :
    a
    r
    g
    s = p
    a
    r
    s
    e
    r
    .
    p
    a
    r
    s
    e
    _
    a
    r
    g
    s
    (
    )
    t
    o
    d
    o
    _
    i
    d = i
    n
    t
    (
    m
    a
    x
    (
    T
    O
    D
    O
    S
    .
    k
    e
    y
    s
    (
    )
    )
    .
    l
    s
    t
    r
    i
    p
    (
    '
    t
    o
    d
    o
    '
    )
    ) + 1
    t
    o
    d
    o
    _
    i
    d = '
    t
    o
    d
    o
    %
    i
    ' % t
    o
    d
    o
    _
    i
    d
    T
    O
    D
    O
    S
    [
    t
    o
    d
    o
    _
    i
    d
    ] = {
    '
    t
    a
    s
    k
    '
    : a
    r
    g
    s
    [
    '
    t
    a
    s
    k
    '
    ]
    }
    r
    e
    t
    u
    r
    n T
    O
    D
    O
    S
    [
    t
    o
    d
    o
    _
    i
    d
    ]
    , 2
    0
    1
    Example #3
    # s
    i
    n
    g
    l
    e i
    t
    e
    m
    ; g
    e
    t ,
    u
    p
    d
    a
    t
    e a
    n
    d d
    e
    l
    e
    t
    e
    c
    l
    a
    s
    s T
    o
    d
    o
    (
    R
    e
    s
    o
    u
    r
    c
    e
    )
    :
    d
    e
    f g
    e
    t
    (
    s
    e
    l
    f
    , t
    o
    d
    o
    _
    i
    d
    )
    :
    a
    b
    o
    r
    t
    _
    i
    f
    _
    t
    o
    d
    o
    _
    d
    o
    e
    s
    n
    t
    _
    e
    x
    i
    s
    t
    (
    t
    o
    d
    o
    _
    i
    d
    )
    r
    e
    t
    u
    r
    n T
    O
    D
    O
    S
    [
    t
    o
    d
    o
    _
    i
    d
    ]
    d
    e
    f d
    e
    l
    e
    t
    e
    (
    s
    e
    l
    f
    , t
    o
    d
    o
    _
    i
    d
    )
    :
    a
    b
    o
    r
    t
    _
    i
    f
    _
    t
    o
    d
    o
    _
    d
    o
    e
    s
    n
    t
    _
    e
    x
    i
    s
    t
    (
    t
    o
    d
    o
    _
    i
    d
    )
    d
    e
    l T
    O
    D
    O
    S
    [
    t
    o
    d
    o
    _
    i
    d
    ]
    r
    e
    t
    u
    r
    n '
    '
    , 2
    0
    4
    d
    e
    f p
    u
    t
    (
    s
    e
    l
    f
    , t
    o
    d
    o
    _
    i
    d
    )
    :
    a
    r
    g
    s = p
    a
    r
    s
    e
    r
    .
    p
    a
    r
    s
    e
    _
    a
    r
    g
    s
    (
    )
    t
    a
    s
    k = {
    '
    t
    a
    s
    k
    '
    : a
    r
    g
    s
    [
    '
    t
    a
    s
    k
    '
    ]
    }
    T
    O
    D
    O
    S
    [
    t
    o
    d
    o
    _
    i
    d
    ] = t
    a
    s
    k
    r
    e
    t
    u
    r
    n t
    a
    s
    k
    , 2
    0
    1
    #
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    a
    p
    i
    .
    a
    d
    d
    _
    r
    e
    s
    o
    u
    r
    c
    e
    (
    T
    o
    d
    o
    L
    i
    s
    t
    , '
    /
    t
    o
    d
    o
    s
    '
    )
    a
    p
    i
    .
    a
    d
    d
    _
    r
    e
    s
    o
    u
    r
    c
    e
    (
    T
    o
    d
    o
    , '
    /
    t
    o
    d
    o
    s
    /
    <
    t
    o
    d
    o
    _
    i
    d
    >
    '
    )
    #
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    i
    f _
    _
    n
    a
    m
    e
    _
    _ =
    = '
    _
    _
    m
    a
    i
    n
    _
    _
    '
    :
    a
    p
    p
    .
    r
    u
    n
    (
    d
    e
    b
    u
    g
    =
    T
    r
    u
    e
    )
    6 / 20

    View full-size slide

  7. 1
    2
    7
    .
    0
    .
    0
    .
    1 - - [
    2
    3
    /
    N
    o
    v
    /
    2
    0
    1
    5 0
    5
    :
    1
    5
    :
    5
    4
    ] "
    G
    E
    T /
    t
    o
    d
    o
    s H
    T
    T
    P
    /
    1
    .
    1
    "
    1
    2
    7
    .
    0
    .
    0
    .
    1 - - [
    2
    3
    /
    N
    o
    v
    /
    2
    0
    1
    5 0
    5
    :
    1
    7
    :
    1
    4
    ] "
    G
    E
    T /
    t
    o
    d
    o
    s
    /
    t
    o
    d
    o
    3 H
    T
    T
    P
    /
    1
    .
    1
    2
    7
    .
    0
    .
    0
    .
    1 - - [
    2
    3
    /
    N
    o
    v
    /
    2
    0
    1
    5 0
    5
    :
    1
    7
    :
    3
    6
    ] "
    D
    E
    L
    E
    T
    E /
    t
    o
    d
    o
    s
    /
    t
    o
    d
    o
    2 H
    T
    T
    P
    1
    2
    7
    .
    0
    .
    0
    .
    1 - - [
    2
    3
    /
    N
    o
    v
    /
    2
    0
    1
    5 0
    5
    :
    1
    7
    :
    5
    9
    ] "
    G
    E
    T /
    t
    o
    d
    o
    s
    /
    t
    o
    d
    o
    2 H
    T
    T
    P
    /
    1
    .
    1
    2
    7
    .
    0
    .
    0
    .
    1 - - [
    2
    3
    /
    N
    o
    v
    /
    2
    0
    1
    5 0
    7
    :
    3
    8
    :
    0
    7
    ] "
    P
    O
    S
    T /
    t
    o
    d
    o
    s H
    T
    T
    P
    /
    1
    .
    1
    "
    1
    2
    7
    .
    0
    .
    0
    .
    1 - - [
    2
    3
    /
    N
    o
    v
    /
    2
    0
    1
    5 0
    7
    :
    3
    8
    :
    5
    6
    ] "
    G
    E
    T /
    t
    o
    d
    o
    s
    /
    t
    o
    d
    o
    4 H
    T
    T
    P
    /
    1
    .
    1
    2
    7
    .
    0
    .
    0
    .
    1 - - [
    2
    3
    /
    N
    o
    v
    /
    2
    0
    1
    5 0
    7
    :
    3
    9
    :
    4
    1
    ] "
    P
    U
    T /
    t
    o
    d
    o
    s
    /
    t
    o
    d
    o
    4 H
    T
    T
    P
    /
    1
    .
    $ c
    u
    r
    l h
    t
    t
    p
    :
    /
    /
    l
    o
    c
    a
    l
    h
    o
    s
    t
    :
    5
    0
    0
    0
    /
    t
    o
    d
    o
    s
    $ c
    u
    r
    l h
    t
    t
    p
    :
    /
    /
    l
    o
    c
    a
    l
    h
    o
    s
    t
    :
    5
    0
    0
    0
    /
    t
    o
    d
    o
    s
    /
    t
    o
    d
    o
    3
    # v
    e
    r
    b
    o
    s
    e
    $ c
    u
    r
    l h
    t
    t
    p
    :
    /
    /
    l
    o
    c
    a
    l
    h
    o
    s
    t
    :
    5
    0
    0
    0
    /
    t
    o
    d
    o
    s
    /
    t
    o
    d
    o
    2 -
    X D
    E
    L
    E
    T
    E -
    v
    $ c
    u
    r
    l h
    t
    t
    p
    :
    /
    /
    l
    o
    c
    a
    l
    h
    o
    s
    t
    :
    5
    0
    0
    0
    /
    t
    o
    d
    o
    s -
    d "
    t
    a
    s
    k
    =
    s
    o
    m
    e
    t
    h
    i
    n
    g n
    e
    w
    " -
    X
    $ c
    u
    r
    l h
    t
    t
    p
    :
    /
    /
    l
    o
    c
    a
    l
    h
    o
    s
    t
    :
    5
    0
    0
    0
    /
    t
    o
    d
    o
    s
    /
    t
    o
    d
    o
    3 -
    d "
    t
    a
    s
    k
    =
    s
    o
    m
    e
    t
    h
    i
    n
    g d
    i
    7 / 20

    View full-size slide

  8. f
    r
    o
    m s
    i
    m
    p
    l
    e
    x
    m
    l i
    m
    p
    o
    r
    t d
    u
    m
    p
    s
    f
    r
    o
    m f
    l
    a
    s
    k i
    m
    p
    o
    r
    t m
    a
    k
    e
    _
    r
    e
    s
    p
    o
    n
    s
    e
    , F
    l
    a
    s
    k
    f
    r
    o
    m f
    l
    a
    s
    k
    _
    r
    e
    s
    t
    f
    u
    l i
    m
    p
    o
    r
    t A
    p
    i
    , R
    e
    s
    o
    u
    r
    c
    e
    #
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    d
    e
    f o
    u
    t
    p
    u
    t
    _
    x
    m
    l
    (
    d
    a
    t
    a
    , c
    o
    d
    e
    , h
    e
    a
    d
    e
    r
    s
    =
    N
    o
    n
    e
    )
    :
    r
    e
    s
    p = m
    a
    k
    e
    _
    r
    e
    s
    p
    o
    n
    s
    e
    (
    d
    u
    m
    p
    s
    (
    {
    '
    r
    e
    s
    p
    o
    n
    s
    e
    ' :
    d
    a
    t
    a
    }
    )
    , c
    o
    d
    e
    )
    r
    e
    s
    p
    .
    h
    e
    a
    d
    e
    r
    s
    .
    e
    x
    t
    e
    n
    d
    (
    h
    e
    a
    d
    e
    r
    s o
    r {
    }
    )
    r
    e
    t
    u
    r
    n r
    e
    s
    p
    #
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    a
    p
    p = F
    l
    a
    s
    k
    (
    _
    _
    n
    a
    m
    e
    _
    _
    )
    a
    p
    i = A
    p
    i
    (
    a
    p
    p
    , d
    e
    f
    a
    u
    l
    t
    _
    m
    e
    d
    i
    a
    t
    y
    p
    e
    =
    '
    a
    p
    p
    l
    i
    c
    a
    t
    i
    o
    n
    /
    x
    m
    l
    '
    )
    a
    p
    i
    .
    r
    e
    p
    r
    e
    s
    e
    n
    t
    a
    t
    i
    o
    n
    s
    [
    '
    a
    p
    p
    l
    i
    c
    a
    t
    i
    o
    n
    /
    x
    m
    l
    '
    ] = o
    u
    t
    p
    u
    t
    _
    x
    m
    l
    #
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    c
    l
    a
    s
    s H
    e
    l
    l
    o
    (
    R
    e
    s
    o
    u
    r
    c
    e
    )
    :
    d
    e
    f g
    e
    t
    (
    s
    e
    l
    f
    , e
    n
    t
    r
    y
    )
    :
    r
    e
    t
    u
    r
    n {
    '
    h
    e
    l
    l
    o
    '
    : e
    n
    t
    r
    y
    }
    #
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    a
    p
    i
    .
    a
    d
    d
    _
    r
    e
    s
    o
    u
    r
    c
    e
    (
    H
    e
    l
    l
    o
    , '
    /
    <
    s
    t
    r
    i
    n
    g
    :
    e
    n
    t
    r
    y
    >
    '
    )
    #
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    i
    f _
    _
    n
    a
    m
    e
    _
    _ =
    = '
    _
    _
    m
    a
    i
    n
    _
    _
    '
    :
    a
    p
    p
    .
    r
    u
    n
    (
    d
    e
    b
    u
    g
    =
    T
    r
    u
    e
    )
    Example #4
    f
    r
    o
    m r
    e
    q
    u
    e
    s
    t
    s i
    m
    p
    o
    r
    t g
    e
    t
    g
    e
    t
    (
    '
    h
    t
    t
    p
    :
    /
    /
    l
    o
    c
    a
    l
    h
    o
    s
    t
    :
    5
    0
    0
    0
    /
    m
    e
    '
    )
    .
    c
    o
    n
    t
    e
    n
    t # d
    e
    f
    a
    u
    l
    t
    _
    m
    e
    d
    i
    a
    t
    y
    p
    e
    # C
    h
    r
    o
    m
    e o
    k
    , P
    o
    s
    t
    m
    a
    n d
    e
    f
    a
    u
    l
    t j
    s
    o
    n
    g
    e
    t
    (
    '
    h
    t
    t
    p
    :
    /
    /
    l
    o
    c
    a
    l
    h
    o
    s
    t
    :
    5
    0
    0
    0
    /
    m
    e
    '
    , h
    e
    a
    d
    e
    r
    s
    =
    {
    "
    a
    c
    c
    e
    p
    t
    "
    :
    "
    a
    p
    p
    l
    i
    c
    a
    t
    i
    o
    n
    g
    e
    t
    (
    '
    h
    t
    t
    p
    :
    /
    /
    l
    o
    c
    a
    l
    h
    o
    s
    t
    :
    5
    0
    0
    0
    /
    m
    e
    '
    , h
    e
    a
    d
    e
    r
    s
    =
    {
    "
    a
    c
    c
    e
    p
    t
    "
    :
    "
    a
    p
    p
    l
    i
    c
    a
    t
    i
    o
    n
    8 / 20

    View full-size slide

  9. References
    Flask-RESTful
    Flask-RESTful Documentation
    Flask-RESTful @github
    9 / 20

    View full-size slide

  10.  Flask-HTTPAuth
    10 / 20

    View full-size slide

  11. f
    r
    o
    m f
    l
    a
    s
    k i
    m
    p
    o
    r
    t F
    l
    a
    s
    k
    f
    r
    o
    m f
    l
    a
    s
    k
    _
    h
    t
    t
    p
    a
    u
    t
    h i
    m
    p
    o
    r
    t H
    T
    T
    P
    B
    a
    s
    i
    c
    A
    u
    t
    h
    a
    p
    p = F
    l
    a
    s
    k
    (
    _
    _
    n
    a
    m
    e
    _
    _
    )
    a
    u
    t
    h = H
    T
    T
    P
    B
    a
    s
    i
    c
    A
    u
    t
    h
    (
    )
    u
    s
    e
    r
    s = {
    "
    j
    o
    h
    n
    "
    : "
    h
    e
    l
    l
    o
    "
    ,
    "
    s
    u
    s
    a
    n
    "
    : "
    b
    y
    e
    "
    }
    #
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    @
    a
    u
    t
    h
    .
    g
    e
    t
    _
    p
    a
    s
    s
    w
    o
    r
    d
    d
    e
    f g
    e
    t
    _
    p
    w
    (
    u
    s
    e
    r
    n
    a
    m
    e
    )
    :
    i
    f u
    s
    e
    r
    n
    a
    m
    e i
    n u
    s
    e
    r
    s
    :
    r
    e
    t
    u
    r
    n u
    s
    e
    r
    s
    .
    g
    e
    t
    (
    u
    s
    e
    r
    n
    a
    m
    e
    )
    r
    e
    t
    u
    r
    n N
    o
    n
    e
    #
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    @
    a
    p
    p
    .
    r
    o
    u
    t
    e
    (
    '
    /
    '
    )
    @
    a
    u
    t
    h
    .
    l
    o
    g
    i
    n
    _
    r
    e
    q
    u
    i
    r
    e
    d
    d
    e
    f i
    n
    d
    e
    x
    (
    )
    :
    r
    e
    t
    u
    r
    n "
    H
    e
    l
    l
    o
    , %
    s
    !
    " % a
    u
    t
    h
    .
    u
    s
    e
    r
    n
    a
    m
    e
    (
    )
    #
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    i
    f _
    _
    n
    a
    m
    e
    _
    _ =
    = '
    _
    _
    m
    a
    i
    n
    _
    _
    '
    :
    a
    p
    p
    .
    r
    u
    n
    (
    d
    e
    b
    u
    g
    =
    T
    r
    u
    e
    )
    Example #1
    1
    2
    7
    .
    0
    .
    0
    .
    1 - - [
    2
    3
    /
    N
    o
    v
    /
    2
    0
    1
    5 1
    8
    :
    2
    4
    :
    0
    7
    ] "
    G
    E
    T / H
    T
    T
    P
    /
    1
    .
    1
    " 4
    0
    1 -
    1
    2
    7
    .
    0
    .
    0
    .
    1 - - [
    2
    3
    /
    N
    o
    v
    /
    2
    0
    1
    5 1
    8
    :
    2
    4
    :
    3
    2
    ] "
    P
    O
    S
    T / H
    T
    T
    P
    /
    1
    .
    1
    " 4
    0
    5 -
    1
    2
    7
    .
    0
    .
    0
    .
    1 - - [
    2
    3
    /
    N
    o
    v
    /
    2
    0
    1
    5 1
    8
    :
    2
    6
    :
    3
    7
    ] "
    G
    E
    T / H
    T
    T
    P
    /
    1
    .
    1
    " 4
    0
    1 -
    1
    2
    7
    .
    0
    .
    0
    .
    1 - - [
    2
    3
    /
    N
    o
    v
    /
    2
    0
    1
    5 1
    8
    :
    2
    7
    :
    3
    0
    ] "
    G
    E
    T / H
    T
    T
    P
    /
    1
    .
    1
    " 2
    0
    0 -
    1
    2
    7
    .
    0
    .
    0
    .
    1 - - [
    2
    3
    /
    N
    o
    v
    /
    2
    0
    1
    5 1
    8
    :
    2
    7
    :
    4
    2
    ] "
    G
    E
    T / H
    T
    T
    P
    /
    1
    .
    1
    " 4
    0
    1 -
    1
    2
    7
    .
    0
    .
    0
    .
    1 - - [
    2
    3
    /
    N
    o
    v
    /
    2
    0
    1
    5 1
    8
    :
    2
    7
    :
    4
    9
    ] "
    G
    E
    T / H
    T
    T
    P
    /
    1
    .
    1
    " 2
    0
    0 -
    11 / 20

    View full-size slide

  12. Example #2
    # h
    t
    t
    p
    :
    /
    /
    j
    o
    h
    n
    :
    h
    e
    l
    l
    o
    @
    l
    o
    c
    a
    l
    h
    o
    s
    t
    :
    5
    0
    0
    0
    1
    2
    7
    .
    0
    .
    0
    .
    1 - - [
    2
    4
    /
    N
    o
    v
    /
    2
    0
    1
    5 1
    5
    :
    4
    7
    :
    5
    5
    ] "
    G
    E
    T / H
    T
    T
    P
    /
    1
    .
    1
    " 4
    0
    1 -
    1
    2
    7
    .
    0
    .
    0
    .
    1 - - [
    2
    4
    /
    N
    o
    v
    /
    2
    0
    1
    5 1
    5
    :
    4
    7
    :
    5
    5
    ] "
    G
    E
    T / H
    T
    T
    P
    /
    1
    .
    1
    " 2
    0
    0 -
    #
    N
    o
    t
    e
    s
    # P
    o
    s
    t
    m
    a
    n f
    a
    i
    l
    e
    d
    !
    # T
    o
    d
    o
    s
    : H
    T
    T
    P
    i
    e
    , r
    e
    q
    u
    e
    s
    t
    s
    f
    r
    o
    m f
    l
    a
    s
    k i
    m
    p
    o
    r
    t F
    l
    a
    s
    k
    f
    r
    o
    m f
    l
    a
    s
    k
    _
    h
    t
    t
    p
    a
    u
    t
    h i
    m
    p
    o
    r
    t H
    T
    T
    P
    D
    i
    g
    e
    s
    t
    A
    u
    t
    h
    a
    p
    p = F
    l
    a
    s
    k
    (
    _
    _
    n
    a
    m
    e
    _
    _
    )
    a
    p
    p
    .
    c
    o
    n
    f
    i
    g
    [
    '
    S
    E
    C
    R
    E
    T
    _
    K
    E
    Y
    '
    ] = '
    s
    e
    c
    r
    e
    t k
    e
    y h
    e
    r
    e
    '
    a
    u
    t
    h = H
    T
    T
    P
    D
    i
    g
    e
    s
    t
    A
    u
    t
    h
    (
    )
    #
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    u
    s
    e
    r
    s = {
    "
    j
    o
    h
    n
    "
    : "
    h
    e
    l
    l
    o
    "
    ,
    "
    s
    u
    s
    a
    n
    "
    : "
    b
    y
    e
    "
    }
    #
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    @
    a
    u
    t
    h
    .
    g
    e
    t
    _
    p
    a
    s
    s
    w
    o
    r
    d
    d
    e
    f g
    e
    t
    _
    p
    w
    (
    u
    s
    e
    r
    n
    a
    m
    e
    )
    :
    i
    f u
    s
    e
    r
    n
    a
    m
    e i
    n u
    s
    e
    r
    s
    :
    r
    e
    t
    u
    r
    n u
    s
    e
    r
    s
    .
    g
    e
    t
    (
    u
    s
    e
    r
    n
    a
    m
    e
    )
    r
    e
    t
    u
    r
    n N
    o
    n
    e
    #
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    @
    a
    p
    p
    .
    r
    o
    u
    t
    e
    (
    '
    /
    '
    )
    @
    a
    u
    t
    h
    .
    l
    o
    g
    i
    n
    _
    r
    e
    q
    u
    i
    r
    e
    d
    d
    e
    f i
    n
    d
    e
    x
    (
    )
    :
    r
    e
    t
    u
    r
    n "
    H
    e
    l
    l
    o
    , %
    s
    !
    " % a
    u
    t
    h
    .
    u
    s
    e
    r
    n
    a
    m
    e
    (
    )
    #
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    i
    f _
    _
    n
    a
    m
    e
    _
    _ =
    = '
    _
    _
    m
    a
    i
    n
    _
    _
    '
    :
    a
    p
    p
    .
    r
    u
    n
    (
    )
    12 / 20

    View full-size slide

  13. References
    Flask-HTTPAuth
    Flask-HTTPAuth Documentation
    Flask-HTTPAuth @github
    13 / 20

    View full-size slide

  14.  Tuts by @miguelgrinberg
    14 / 20

    View full-size slide

  15. f
    r
    o
    m f
    l
    a
    s
    k i
    m
    p
    o
    r
    t F
    l
    a
    s
    k
    , j
    s
    o
    n
    i
    f
    y
    , a
    b
    o
    r
    t
    , m
    a
    k
    e
    _
    r
    e
    s
    p
    o
    n
    s
    e
    f
    r
    o
    m f
    l
    a
    s
    k
    .
    e
    x
    t
    .
    r
    e
    s
    t
    f
    u
    l i
    m
    p
    o
    r
    t A
    p
    i
    , R
    e
    s
    o
    u
    r
    c
    e
    , r
    e
    q
    p
    a
    r
    s
    e
    , f
    i
    e
    l
    d
    s
    , m
    a
    r
    s
    h
    a
    l
    f
    r
    o
    m f
    l
    a
    s
    k
    .
    e
    x
    t
    .
    h
    t
    t
    p
    a
    u
    t
    h i
    m
    p
    o
    r
    t H
    T
    T
    P
    B
    a
    s
    i
    c
    A
    u
    t
    h
    # a
    p
    p = F
    l
    a
    s
    k
    (
    _
    _
    n
    a
    m
    e
    _
    _
    , s
    t
    a
    t
    i
    c
    _
    u
    r
    l
    _
    p
    a
    t
    h
    =
    "
    "
    ) -
    > 4
    0
    4
    a
    p
    p = F
    l
    a
    s
    k
    (
    _
    _
    n
    a
    m
    e
    _
    _
    )
    a
    p
    i = A
    p
    i
    (
    a
    p
    p
    )
    a
    u
    t
    h = H
    T
    T
    P
    B
    a
    s
    i
    c
    A
    u
    t
    h
    (
    )
    #
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    @
    a
    u
    t
    h
    .
    g
    e
    t
    _
    p
    a
    s
    s
    w
    o
    r
    d
    d
    e
    f g
    e
    t
    _
    p
    a
    s
    s
    w
    o
    r
    d
    (
    u
    s
    e
    r
    n
    a
    m
    e
    )
    :
    i
    f u
    s
    e
    r
    n
    a
    m
    e =
    = '
    m
    i
    g
    u
    e
    l
    '
    :
    r
    e
    t
    u
    r
    n '
    p
    y
    t
    h
    o
    n
    '
    r
    e
    t
    u
    r
    n N
    o
    n
    e
    @
    a
    u
    t
    h
    .
    e
    r
    r
    o
    r
    _
    h
    a
    n
    d
    l
    e
    r
    d
    e
    f u
    n
    a
    u
    t
    h
    o
    r
    i
    z
    e
    d
    (
    )
    :
    # r
    e
    t
    u
    r
    n 4
    0
    3 i
    n
    s
    t
    e
    a
    d o
    f 4
    0
    1 t
    o p
    r
    e
    v
    e
    n
    t b
    r
    o
    w
    s
    e
    r
    s f
    r
    o
    m d
    i
    s
    p
    l
    a
    y
    i
    n
    g t
    h
    e d
    e
    f
    a
    u
    l
    t
    # a
    u
    t
    h d
    i
    a
    l
    o
    g
    r
    e
    t
    u
    r
    n m
    a
    k
    e
    _
    r
    e
    s
    p
    o
    n
    s
    e
    (
    j
    s
    o
    n
    i
    f
    y
    (
    {
    '
    m
    e
    s
    s
    a
    g
    e
    '
    : '
    U
    n
    a
    u
    t
    h
    o
    r
    i
    z
    e
    d a
    c
    c
    e
    s
    s
    '
    #
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    #
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    a
    p
    i
    .
    a
    d
    d
    _
    r
    e
    s
    o
    u
    r
    c
    e
    (
    T
    a
    s
    k
    L
    i
    s
    t
    A
    P
    I
    , '
    /
    t
    o
    d
    o
    /
    a
    p
    i
    /
    v
    1
    .
    0
    /
    t
    a
    s
    k
    s
    '
    , e
    n
    d
    p
    o
    i
    n
    t
    =
    a
    p
    i
    .
    a
    d
    d
    _
    r
    e
    s
    o
    u
    r
    c
    e
    (
    T
    a
    s
    k
    A
    P
    I
    , '
    /
    t
    o
    d
    o
    /
    a
    p
    i
    /
    v
    1
    .
    0
    /
    t
    a
    s
    k
    s
    /
    <
    i
    n
    t
    :
    i
    d
    >
    '
    , e
    n
    d
    p
    o
    i
    n
    t
    =
    #
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    i
    f _
    _
    n
    a
    m
    e
    _
    _ =
    = '
    _
    _
    m
    a
    i
    n
    _
    _
    '
    :
    a
    p
    p
    .
    r
    u
    n
    (
    d
    e
    b
    u
    g
    =
    T
    r
    u
    e
    )
    Example #1
    Part 1,2
    t
    a
    s
    k
    s = [
    {
    '
    i
    d
    '
    : 1
    ,
    '
    t
    i
    t
    l
    e
    '
    : u
    '
    B
    u
    y g
    r
    o
    c
    e
    r
    i
    e
    s
    '
    ,
    '
    d
    e
    s
    c
    r
    i
    p
    t
    i
    o
    n
    '
    : u
    '
    M
    i
    l
    k
    , C
    h
    e
    e
    s
    e
    , P
    i
    z
    z
    a
    , F
    r
    u
    i
    t
    , T
    y
    l
    e
    n
    o
    l
    '
    '
    d
    o
    n
    e
    '
    : F
    a
    l
    s
    e
    }
    ,
    {
    '
    i
    d
    '
    : 2
    ,
    '
    t
    i
    t
    l
    e
    '
    : u
    '
    L
    e
    a
    r
    n P
    y
    t
    h
    o
    n
    '
    ,
    '
    d
    e
    s
    c
    r
    i
    p
    t
    i
    o
    n
    '
    : u
    '
    N
    e
    e
    d t
    o f
    i
    n
    d a g
    o
    o
    d P
    y
    t
    h
    o
    n t
    u
    t
    o
    r
    i
    a
    l o
    '
    d
    o
    n
    e
    '
    : F
    a
    l
    s
    e
    }
    ]
    #
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    t
    a
    s
    k
    _
    f
    i
    e
    l
    d
    s = {
    '
    t
    i
    t
    l
    e
    '
    : f
    i
    e
    l
    d
    s
    .
    S
    t
    r
    i
    n
    g
    ,
    '
    d
    e
    s
    c
    r
    i
    p
    t
    i
    o
    n
    '
    : f
    i
    e
    l
    d
    s
    .
    S
    t
    r
    i
    n
    g
    ,
    '
    d
    o
    n
    e
    '
    : f
    i
    e
    l
    d
    s
    .
    B
    o
    o
    l
    e
    a
    n
    ,
    '
    u
    r
    i
    '
    : f
    i
    e
    l
    d
    s
    .
    U
    r
    l
    (
    '
    t
    a
    s
    k
    '
    )
    }
    15 / 20

    View full-size slide

  16. Part 3,4
    c
    l
    a
    s
    s T
    a
    s
    k
    L
    i
    s
    t
    A
    P
    I
    (
    R
    e
    s
    o
    u
    r
    c
    e
    )
    :
    d
    e
    c
    o
    r
    a
    t
    o
    r
    s = [
    a
    u
    t
    h
    .
    l
    o
    g
    i
    n
    _
    r
    e
    q
    u
    i
    r
    e
    d
    ]
    d
    e
    f _
    _
    i
    n
    i
    t
    _
    _
    (
    s
    e
    l
    f
    )
    :
    s
    e
    l
    f
    .
    r
    e
    q
    p
    a
    r
    s
    e = r
    e
    q
    p
    a
    r
    s
    e
    .
    R
    e
    q
    u
    e
    s
    t
    P
    a
    r
    s
    e
    r
    (
    )
    s
    e
    l
    f
    .
    r
    e
    q
    p
    a
    r
    s
    e
    .
    a
    d
    d
    _
    a
    r
    g
    u
    m
    e
    n
    t
    (
    '
    t
    i
    t
    l
    e
    '
    , t
    y
    p
    e
    =
    s
    t
    r
    , r
    e
    q
    u
    i
    r
    e
    d
    =
    h
    e
    l
    p
    =
    '
    N
    o t
    a
    s
    k t
    i
    t
    l
    e p
    r
    o
    v
    i
    d
    e
    d
    '
    l
    o
    c
    a
    t
    i
    o
    n
    =
    '
    j
    s
    o
    n
    '
    )
    s
    e
    l
    f
    .
    r
    e
    q
    p
    a
    r
    s
    e
    .
    a
    d
    d
    _
    a
    r
    g
    u
    m
    e
    n
    t
    (
    '
    d
    e
    s
    c
    r
    i
    p
    t
    i
    o
    n
    '
    , t
    y
    p
    e
    =
    s
    t
    r
    , d
    e
    f
    a
    u
    l
    t
    =
    l
    o
    c
    a
    t
    i
    o
    n
    =
    '
    j
    s
    o
    n
    '
    )
    s
    u
    p
    e
    r
    (
    T
    a
    s
    k
    L
    i
    s
    t
    A
    P
    I
    , s
    e
    l
    f
    )
    .
    _
    _
    i
    n
    i
    t
    _
    _
    (
    )
    d
    e
    f g
    e
    t
    (
    s
    e
    l
    f
    )
    :
    r
    e
    t
    u
    r
    n {
    '
    t
    a
    s
    k
    s
    '
    : [
    m
    a
    r
    s
    h
    a
    l
    (
    t
    a
    s
    k
    , t
    a
    s
    k
    _
    f
    i
    e
    l
    d
    s
    ) f
    o
    r t
    a
    s
    k
    d
    e
    f p
    o
    s
    t
    (
    s
    e
    l
    f
    )
    :
    a
    r
    g
    s = s
    e
    l
    f
    .
    r
    e
    q
    p
    a
    r
    s
    e
    .
    p
    a
    r
    s
    e
    _
    a
    r
    g
    s
    (
    )
    t
    a
    s
    k = {
    '
    i
    d
    '
    : t
    a
    s
    k
    s
    [
    -
    1
    ]
    [
    '
    i
    d
    '
    ] + 1
    ,
    '
    t
    i
    t
    l
    e
    '
    : a
    r
    g
    s
    [
    '
    t
    i
    t
    l
    e
    '
    ]
    ,
    '
    d
    e
    s
    c
    r
    i
    p
    t
    i
    o
    n
    '
    : a
    r
    g
    s
    [
    '
    d
    e
    s
    c
    r
    i
    p
    t
    i
    o
    n
    '
    ]
    ,
    '
    d
    o
    n
    e
    '
    : F
    a
    l
    s
    e
    }
    t
    a
    s
    k
    s
    .
    a
    p
    p
    e
    n
    d
    (
    t
    a
    s
    k
    )
    r
    e
    t
    u
    r
    n {
    '
    t
    a
    s
    k
    '
    : m
    a
    r
    s
    h
    a
    l
    (
    t
    a
    s
    k
    , t
    a
    s
    k
    _
    f
    i
    e
    l
    d
    s
    )
    }
    , 2
    0
    1
    c
    l
    a
    s
    s T
    a
    s
    k
    A
    P
    I
    (
    R
    e
    s
    o
    u
    r
    c
    e
    )
    :
    d
    e
    c
    o
    r
    a
    t
    o
    r
    s = [
    a
    u
    t
    h
    .
    l
    o
    g
    i
    n
    _
    r
    e
    q
    u
    i
    r
    e
    d
    ]
    d
    e
    f _
    _
    i
    n
    i
    t
    _
    _
    (
    s
    e
    l
    f
    )
    :
    s
    e
    l
    f
    .
    r
    e
    q
    p
    a
    r
    s
    e = r
    e
    q
    p
    a
    r
    s
    e
    .
    R
    e
    q
    u
    e
    s
    t
    P
    a
    r
    s
    e
    r
    (
    )
    s
    e
    l
    f
    .
    r
    e
    q
    p
    a
    r
    s
    e
    .
    a
    d
    d
    _
    a
    r
    g
    u
    m
    e
    n
    t
    (
    '
    t
    i
    t
    l
    e
    '
    , t
    y
    p
    e
    =
    s
    t
    r
    , l
    o
    c
    a
    t
    i
    o
    n
    s
    e
    l
    f
    .
    r
    e
    q
    p
    a
    r
    s
    e
    .
    a
    d
    d
    _
    a
    r
    g
    u
    m
    e
    n
    t
    (
    '
    d
    e
    s
    c
    r
    i
    p
    t
    i
    o
    n
    '
    , t
    y
    p
    e
    =
    s
    t
    r
    , l
    o
    s
    e
    l
    f
    .
    r
    e
    q
    p
    a
    r
    s
    e
    .
    a
    d
    d
    _
    a
    r
    g
    u
    m
    e
    n
    t
    (
    '
    d
    o
    n
    e
    '
    , t
    y
    p
    e
    =
    b
    o
    o
    l
    , l
    o
    c
    a
    t
    i
    o
    n
    s
    u
    p
    e
    r
    (
    T
    a
    s
    k
    A
    P
    I
    , s
    e
    l
    f
    )
    .
    _
    _
    i
    n
    i
    t
    _
    _
    (
    )
    d
    e
    f g
    e
    t
    (
    s
    e
    l
    f
    , i
    d
    )
    :
    t
    a
    s
    k = [
    t
    a
    s
    k f
    o
    r t
    a
    s
    k i
    n t
    a
    s
    k
    s i
    f t
    a
    s
    k
    [
    '
    i
    d
    '
    ] =
    = i
    d
    ]
    i
    f l
    e
    n
    (
    t
    a
    s
    k
    ) =
    = 0
    : a
    b
    o
    r
    t
    (
    4
    0
    4
    )
    r
    e
    t
    u
    r
    n {
    '
    t
    a
    s
    k
    '
    : m
    a
    r
    s
    h
    a
    l
    (
    t
    a
    s
    k
    [
    0
    ]
    , t
    a
    s
    k
    _
    f
    i
    e
    l
    d
    s
    )
    }
    d
    e
    f p
    u
    t
    (
    s
    e
    l
    f
    , i
    d
    )
    :
    t
    a
    s
    k = [
    t
    a
    s
    k f
    o
    r t
    a
    s
    k i
    n t
    a
    s
    k
    s i
    f t
    a
    s
    k
    [
    '
    i
    d
    '
    ] =
    = i
    d
    ]
    i
    f l
    e
    n
    (
    t
    a
    s
    k
    ) =
    = 0
    : a
    b
    o
    r
    t
    (
    4
    0
    4
    )
    t
    a
    s
    k = t
    a
    s
    k
    [
    0
    ]
    a
    r
    g
    s = s
    e
    l
    f
    .
    r
    e
    q
    p
    a
    r
    s
    e
    .
    p
    a
    r
    s
    e
    _
    a
    r
    g
    s
    (
    )
    f
    o
    r k
    , v i
    n a
    r
    g
    s
    .
    i
    t
    e
    m
    s
    (
    )
    :
    i
    f v i
    s n
    o
    t N
    o
    n
    e
    :
    t
    a
    s
    k
    [
    k
    ] = v
    r
    e
    t
    u
    r
    n {
    '
    t
    a
    s
    k
    '
    : m
    a
    r
    s
    h
    a
    l
    (
    t
    a
    s
    k
    , t
    a
    s
    k
    _
    f
    i
    e
    l
    d
    s
    )
    }
    d
    e
    f d
    e
    l
    e
    t
    e
    (
    s
    e
    l
    f
    , i
    d
    )
    :
    t
    a
    s
    k = [
    t
    a
    s
    k f
    o
    r t
    a
    s
    k i
    n t
    a
    s
    k
    s i
    f t
    a
    s
    k
    [
    '
    i
    d
    '
    ] =
    = i
    d
    ]
    i
    f l
    e
    n
    (
    t
    a
    s
    k
    ) =
    = 0
    : a
    b
    o
    r
    t
    (
    4
    0
    4
    )
    t
    a
    s
    k
    s
    .
    r
    e
    m
    o
    v
    e
    (
    t
    a
    s
    k
    [
    0
    ]
    )
    r
    e
    t
    u
    r
    n {
    '
    r
    e
    s
    u
    l
    t
    '
    : T
    r
    u
    e
    }
    16 / 20

    View full-size slide

  17. The APIs
    HTTP Method URI Endpoint Action
    GET /todo/api/v1.0/tasks tasks Retrieve list of tasks
    POST /todo/api/v1.0/tasks tasks Create a new task
    GET /todo/api/v1.0/tasks/[task_id] task Retrieve a task
    PUT /todo/api/v1.0/tasks/[task_id] task Update an existing task
    DELETE /todo/api/v1.0/tasks/[task_id] task Delete a task
    17 / 20

    View full-size slide

  18. Notes
    Marshalling
    R
    e
    q
    u
    e
    s
    t
    P
    a
    r
    s
    e
    r
    : define the arguments and how to
    validate them.
    A side benefit of letting Flask-RESTful do the validation is
    that now there is no need to have a handler for the bad
    request code 400 error, this is all taken care of by the
    extension.
    Example #1
    18 / 20

    View full-size slide

  19. References
    Designing a RESTful API using Flask-RESTful
    Code Repo @github
    19 / 20

    View full-size slide

  20.  END
    Eueung Mulyana
    http://eueung.github.io/python/flask-restful
    Python CodeLabs | Attribution-ShareAlike CC BY-SA
    20 / 20

    View full-size slide