Bird
Raised Fist0
Rest APIprogramming~5 mins

If-None-Match and 304 responses in Rest API - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is the purpose of the If-None-Match HTTP header?
The If-None-Match header is used by clients to make a conditional request. It sends an ETag value to the server, asking to return the resource only if it has changed. If the resource's ETag matches the value, the server can respond with a 304 Not Modified status, saving bandwidth.
Click to reveal answer
beginner
What does a 304 Not Modified response mean?
A 304 Not Modified response means the requested resource has not changed since the last time the client requested it. The server tells the client to use its cached version, so no new data is sent.
Click to reveal answer
intermediate
How does the server decide to send a 304 response when it receives an If-None-Match header?
The server compares the ETag value sent in the If-None-Match header with the current ETag of the resource. If they match, it means the resource has not changed, so the server sends a 304 Not Modified response without the resource body.
Click to reveal answer
beginner
Why is using If-None-Match and 304 responses beneficial?
They reduce data transfer and improve performance by avoiding sending the full resource when it hasn't changed. This saves bandwidth and speeds up loading times for users.
Click to reveal answer
beginner
What is an ETag in the context of HTTP caching?
An ETag (Entity Tag) is a unique identifier assigned by the server to a specific version of a resource. It helps clients and servers determine if the resource has changed since the last request.
Click to reveal answer
What does the If-None-Match header contain?
AThe server's status code
BThe full content of the resource
CAn ETag value from a previous response
DThe client's IP address
What status code does the server send if the resource has NOT changed?
A304 Not Modified
B404 Not Found
C200 OK
D500 Internal Server Error
Why is a 304 response useful?
AIt forces the client to reload the page
BIt reduces bandwidth by not sending the resource again
CIt deletes the cached resource
DIt indicates a server error
What happens if the ETag in If-None-Match does NOT match the current resource ETag?
AServer sends 200 OK with the new resource
BServer sends 304 Not Modified
CServer sends 404 Not Found
DServer closes the connection
Which header does the server include in the response to identify the resource version?
AContent-Type
BCache-Control
CAuthorization
DETag
Explain how the If-None-Match header and 304 Not Modified response work together to optimize web requests.
Think about how the client checks if the resource changed before downloading it again.
You got /5 concepts.
    Describe what an ETag is and why it is important in HTTP caching.
    Consider how the server and client know if the resource has changed.
    You got /4 concepts.

      Practice

      (1/5)
      1. What does the If-None-Match header do in a REST API request?
      easy
      A. It asks the server to send data only if it has changed since the last request.
      B. It forces the server to ignore caching and send fresh data every time.
      C. It tells the server to delete the cached data on the client side.
      D. It requests the server to send the full data regardless of changes.

      Solution

      1. Step 1: Understand the purpose of If-None-Match

        This header sends the ETag value from the client to check if the resource has changed.
      2. Step 2: Determine the server's response based on the ETag

        If the ETag matches, the server returns 304 Not Modified, meaning no new data is sent.
      3. Final Answer:

        It asks the server to send data only if it has changed since the last request. -> Option A
      4. Quick Check:

        If-None-Match checks changes [OK]
      Hint: If-None-Match checks if data changed before sending [OK]
      Common Mistakes:
      • Thinking it forces fresh data every time
      • Confusing it with cache deletion
      • Assuming it always sends full data
      2. Which of the following is the correct syntax for sending an If-None-Match header with ETag value "abc123" in an HTTP request?
      easy
      A. If-None-Match: abc123
      B. If-None-Match = "abc123"
      C. If-None-Match: "abc123"
      D. If-None-Match => abc123

      Solution

      1. Step 1: Recall HTTP header syntax

        Headers use colon : to separate name and value, and ETag values are quoted strings.
      2. Step 2: Identify correct quoting and separator

        If-None-Match: "abc123" uses colon and quotes correctly: If-None-Match: "abc123".
      3. Final Answer:

        If-None-Match: "abc123" -> Option C
      4. Quick Check:

        Headers use colon + quoted ETag [OK]
      Hint: Headers use colon and quotes for ETag values [OK]
      Common Mistakes:
      • Omitting quotes around ETag
      • Using equals or arrow instead of colon
      • Not quoting the ETag string
      3. Given this server logic:
      if request.headers.get('If-None-Match') == current_etag:
          return 304
      else:
          return 200 with data and ETag

      What will the server respond if the client sends If-None-Match: "xyz789" but current_etag is "abc123"?
      medium
      A. 200 OK with data and ETag
      B. 304 Not Modified
      C. 400 Bad Request
      D. 500 Internal Server Error

      Solution

      1. Step 1: Compare client's ETag with server's current ETag

        The client sends "xyz789" but the server's current ETag is "abc123", so they do not match.
      2. Step 2: Determine server response based on mismatch

        Since ETags differ, the server sends full data with status 200 and the current ETag.
      3. Final Answer:

        200 OK with data and ETag -> Option A
      4. Quick Check:

        ETags differ -> send data [OK]
      Hint: If ETags differ, server sends full data (200) [OK]
      Common Mistakes:
      • Assuming 304 when ETags differ
      • Confusing 400 or 500 errors with ETag mismatch
      • Ignoring quotes in ETag comparison
      4. A developer wrote this code snippet to handle If-None-Match but it always returns 200 OK even when ETags match:
      if request.headers['If-None-Match'] == current_etag:
          return 200, data
      else:
          return 304

      What is the main error?
      medium
      A. The server must always return 200 regardless of ETag.
      B. The code should compare request.headers.get() instead of direct indexing.
      C. The ETag values should be stripped of quotes before comparison.
      D. The 200 and 304 status codes are swapped in the if-else blocks.

      Solution

      1. Step 1: Analyze the if condition and returned status codes

        The code returns 200 OK when ETags match, but it should return 304 Not Modified instead.
      2. Step 2: Identify correct status code usage for ETag match

        When ETags match, server returns 304 to avoid sending data; else returns 200 with data.
      3. Final Answer:

        The 200 and 304 status codes are swapped in the if-else blocks. -> Option D
      4. Quick Check:

        ETag match -> 304, not 200 [OK]
      Hint: 304 means no change; 200 means send data [OK]
      Common Mistakes:
      • Returning 200 on ETag match
      • Confusing header access methods
      • Ignoring quotes in ETag comparison
      5. You want to optimize your REST API to reduce bandwidth by using If-None-Match. Which of the following sequences correctly describes the client-server interaction to achieve this?
      hard
      A. Client sends request with If-None-Match -> Server always returns 200 with data and ETag -> Client caches data
      B. Client sends request without ETag -> Server sends data with ETag -> Client caches data and ETag -> Client sends request with If-None-Match header -> Server returns 304 if data unchanged
      C. Client sends request with ETag in body -> Server returns 304 if data unchanged -> Client discards cached data
      D. Client sends request without headers -> Server returns 304 if data unchanged -> Client updates cache

      Solution

      1. Step 1: Understand the correct use of If-None-Match and 304

        The client first gets data and ETag, caches them, then sends If-None-Match with ETag to check for changes.
      2. Step 2: Identify the correct sequence

        The sequence that starts with an initial request without the ETag header, receives data and ETag from the server, caches both, and then uses If-None-Match on future requests, receiving 304 if unchanged, is correct.
      3. Final Answer:

        Client sends request without ETag -> Server sends data with ETag -> Client caches data and ETag -> Client sends request with If-None-Match header -> Server returns 304 if data unchanged -> Option B
      4. Quick Check:

        Proper If-None-Match flow [OK]
      Hint: Initial fetch no ETag, then use If-None-Match with ETag [OK]
      Common Mistakes:
      • Sending ETag in request body instead of header
      • Expecting 304 without sending If-None-Match
      • Ignoring caching after 304 response
      Recommended

      Ready to prove it?

      Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

      10 questions~5 mineasy hard